Passed
Pull Request — master (#354)
by Alejandro
05:24
created

JsonErrorResponseGeneratorTest::setUp()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 0
dl 0
loc 3
rs 10
c 0
b 0
f 0
1
<?php
2
declare(strict_types=1);
3
4
namespace ShlinkioTest\Shlink\Rest\ErrorHandler;
5
6
use PHPUnit\Framework\TestCase;
7
use Shlinkio\Shlink\Rest\ErrorHandler\JsonErrorResponseGenerator;
8
use Zend\Diactoros\Response;
9
use Zend\Diactoros\ServerRequest;
10
use function array_map;
11
use function range;
12
13
class JsonErrorResponseGeneratorTest extends TestCase
14
{
15
    /** @var JsonErrorResponseGenerator */
16
    private $errorHandler;
17
18
    public function setUp(): void
19
    {
20
        $this->errorHandler = new JsonErrorResponseGenerator();
21
    }
22
23
    /** @test */
24
    public function noErrorStatusReturnsInternalServerError(): void
25
    {
26
        /** @var Response\JsonResponse $response */
27
        $response = $this->errorHandler->__invoke(null, new ServerRequest(), new Response());
28
        $payload = $response->getPayload();
29
30
        $this->assertInstanceOf(Response\JsonResponse::class, $response);
31
        $this->assertEquals(500, $response->getStatusCode());
32
        $this->assertEquals('Internal Server Error', $payload['message']);
33
    }
34
35
    /**
36
     * @test
37
     * @dataProvider provideStatus
38
     */
39
    public function errorStatusReturnsThatStatus(int $status, string $message): void
40
    {
41
        /** @var Response\JsonResponse $response */
42
        $response = $this->errorHandler->__invoke(
43
            null,
44
            new ServerRequest(),
45
            (new Response())->withStatus($status, $message)
46
        );
47
        $payload = $response->getPayload();
48
49
        $this->assertInstanceOf(Response\JsonResponse::class, $response);
50
        $this->assertEquals($status, $response->getStatusCode());
51
        $this->assertEquals($message, $payload['message']);
52
    }
53
54
    public function provideStatus(): iterable
55
    {
56
        return array_map(function (int $status) {
57
            return [$status, 'Some message'];
58
        }, range(400, 500, 20));
59
    }
60
}
61