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