<?php

namespace Tests\Integration\Services;

use App\Services\iTunesService;
use Exception;
use GuzzleHttp\Client;
use GuzzleHttp\Psr7\Response;
use Illuminate\Contracts\Cache\Repository as Cache;
use Illuminate\Log\Logger;
use Mockery;
use Tests\TestCase;

class iTunesServiceTest extends TestCase
{
    /**
     * @throws Exception
     */
    public function testGetTrackUrl(): void
    {
        $term = 'Foo Bar';

        /** @var Client $client */
        $client = Mockery::mock(Client::class, [
            'get' => new Response(200, [], file_get_contents(__DIR__.'../../../blobs/itunes/track.json')),
        ]);

        $cache = app(Cache::class);
        $logger = app(Logger::class);

        $url = (new iTunesService($client, $cache, $logger))->getTrackUrl($term);

        self::assertEquals(
            'https://itunes.apple.com/us/album/i-remember-you/id265611220?i=265611396&uo=4&at=1000lsGu',
            $url
        );

        self::assertNotNull(cache('b57a14784d80c58a856e0df34ff0c8e2'));
    }
}