<?php

namespace SilverStripe\View\Tests\Shortcodes;

use Embed\Http\DispatcherInterface;
use Embed\Http\ImageResponse;
use Embed\Http\Response;
use Embed\Http\Url;
use InvalidArgumentException;

class MockResolver implements DispatcherInterface
{
    protected $url = null;

    protected $expectedContent = null;

    /**
     * Constructor. Sets the url.
     *
     * @param string $url The url value
     * @param array $config The resolver configuration
     */
    public function __construct($url, array $config)
    {
        $this->url = $url;
        if (empty($config['expectedContent'])) {
            throw new InvalidArgumentException("Mock resolvers need expectedContent");
        }
        $this->expectedContent = $config['expectedContent'];
    }

    /**
     * Dispatch an url.
     *
     * @param Url $url
     *
     * @return Response
     */
    public function dispatch(Url $url)
    {
        return new Response(
            $url,
            $url,
            200,
            'application/json',
            $this->expectedContent,
            [],
            []
        );
    }

    /**
     * Resolve multiple image urls at once.
     *
     * @param Url[] $urls
     *
     * @return ImageResponse[]
     */
    public function dispatchImages(array $urls)
    {
        return [];
    }
}