<?php

namespace Tests\Unit\Jobs;

use App\Contracts\CreativeBriefResolver;
use App\DTOs\CreativeBrief;
use App\Jobs\PrefetchCreativeBriefJob;
use Illuminate\Support\Facades\Cache;
use Tests\TestCase;

class PrefetchCreativeBriefJobTest extends TestCase
{
    public function test_it_resolves_and_caches_a_product_url_brief(): void
    {
        $url = 'https://example.com/product';
        $brief = new CreativeBrief(
            productName: 'Example Product',
            benefits: ['Fast'],
            features: ['Simple'],
            images: [],
            messaging: 'Clear',
            cta: 'Start now',
        );
        $resolver = $this->mock(CreativeBriefResolver::class);
        $resolver->expects('fromProductUrl')->once()->with($url)->andReturn($brief);

        (new PrefetchCreativeBriefJob($url, 'product_url'))->handle($resolver);

        $this->assertSame(
            $brief->toArray(),
            Cache::get(PrefetchCreativeBriefJob::cacheKey('product_url', $url)),
        );
    }
}
