<?php

namespace Tests\Unit\Services\Keywords;

use App\Services\Keywords\KeywordSeedBuilder;
use Tests\TestCase;

class KeywordSeedBuilderTest extends TestCase
{
    public function test_it_builds_deduplicated_seeds_from_catalog_context_and_products(): void
    {
        config(['google-ads.max_seeds' => 15]);

        $seeds = (new KeywordSeedBuilder)->build(
            'Acme',
            'Outdoor',
            'Tents',
            [
                ['name' => 'Acme Dome Tent 4-Person'],
                ['name' => 'Acme Pop-Up Canopy'],
            ],
        );

        $this->assertContains('tents', $seeds);
        $this->assertContains('outdoor', $seeds);
        $this->assertContains('acme', $seeds);
        $this->assertContains('acme outdoor', $seeds);
        $this->assertContains('outdoor tents', $seeds);
        $this->assertSame($seeds, array_values(array_unique($seeds)));
    }

    public function test_it_respects_the_configured_seed_limit(): void
    {
        config(['google-ads.max_seeds' => 5]);

        $seeds = (new KeywordSeedBuilder)->build(
            'Brand',
            'Office',
            'Chairs',
            array_map(
                static fn (int $index): array => ['name' => "Ergonomic Mesh Task Chair Model {$index}"],
                range(1, 10),
            ),
        );

        $this->assertCount(5, $seeds);
    }

    public function test_it_builds_product_specific_heuristic_seeds(): void
    {
        $seeds = (new KeywordSeedBuilder)->seedsForCandidate(
            'Acme',
            'Outdoor',
            'Tents',
            ['name' => 'Acme Dome Tent 4-Person'],
        );

        $this->assertContains('acme dome tent 4-person', $seeds);
        $this->assertContains('outdoor acme dome tent 4-person', $seeds);
        $this->assertContains('tents acme dome tent 4-person', $seeds);
    }
}
