<?php
declare(strict_types=1);

namespace ShlinkioTest\Shlink\Rest\ErrorHandler;

use PHPUnit\Framework\TestCase;
use Shlinkio\Shlink\Rest\ErrorHandler\JsonErrorResponseGenerator;
use Zend\Diactoros\Response;
use Zend\Diactoros\ServerRequestFactory;

class JsonErrorResponseGeneratorTest extends TestCase
{
    /**
     * @var JsonErrorResponseGenerator
     */
    protected $errorHandler;

    public function setUp()
    {
        $this->errorHandler = new JsonErrorResponseGenerator();
    }

    /**
     * @test
     */
    public function noErrorStatusReturnsInternalServerError()
    {
        $response = $this->errorHandler->__invoke(null, ServerRequestFactory::fromGlobals(), new Response());
        $this->assertInstanceOf(Response\JsonResponse::class, $response);
        $this->assertEquals(500, $response->getStatusCode());
    }

    /**
     * @test
     */
    public function errorStatusReturnsThatStatus()
    {
        $response = $this->errorHandler->__invoke(
            null,
            ServerRequestFactory::fromGlobals(),
            (new Response())->withStatus(405)
        );
        $this->assertInstanceOf(Response\JsonResponse::class, $response);
        $this->assertEquals(405, $response->getStatusCode());
    }
}