ApiGatewayResponseTest::testSend()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 7
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 5
c 1
b 0
f 0
nc 1
nop 0
dl 0
loc 7
rs 10
1
<?php
2
3
namespace GuillermoandraeTest\Lambda;
4
5
use Guillermoandrae\Http\StatusCodes;
6
use Guillermoandrae\Lambda\Contracts\AbstractApiGatewayResponse;
7
use PHPUnit\Framework\TestCase;
8
9
final class ApiGatewayResponseTest extends TestCase
10
{
11
    public function testSetGetStatusCode()
12
    {
13
        $response = $this->getMockForAbstractClass(AbstractApiGatewayResponse::class);
14
        $statusCode = 301;
15
        $response->setStatusCode($statusCode);
16
        $this->assertEquals($statusCode, $response->getStatusCode());
17
    }
18
19
    public function testAddGetHeaders()
20
    {
21
        $response = $this->getMockForAbstractClass(AbstractApiGatewayResponse::class);
22
        $defaultHeader = ['Access-Control-Allow-Origin' => '*'];
23
        $newHeaderName = 'My-Header';
24
        $newHeaderValue = 'Test';
25
        $expectedHeaders = array_merge($defaultHeader, [$newHeaderName => $newHeaderValue]);
26
        $response->addHeader($newHeaderName, $newHeaderValue);
27
        $this->assertEquals($expectedHeaders, $response->getHeaders());
28
    }
29
30
    public function testSetGetEvent()
31
    {
32
        $response = $this->getMockForAbstractClass(AbstractApiGatewayResponse::class);
33
        $event = ['this', 'is', 'a', 'test'];
34
        $response->setEvent($event);
35
        $this->assertEquals($event, $response->getEvent());
36
    }
37
38
    public function testSend()
39
    {
40
        $response = $this->getMockForAbstractClass(AbstractApiGatewayResponse::class);
41
        $output = $response->send();
42
        $body = json_decode($output['body'], true);
43
        $this->assertEquals(200, $output['statusCode']);
44
        $this->assertEquals(3, $body['meta']['count']);
45
    }
46
47
    public function testSendWithoutBody()
48
    {
49
        $response = $this->getMockForAbstractClass(
50
            AbstractApiGatewayResponse::class,
51
            [],
52
            '',
53
            true,
54
            true,
55
            true,
56
            ['handle']
57
        );
58
        $response->setStatusCode(StatusCodes::CREATED);
59
        $output = $response->send();
60
        $this->assertEquals(StatusCodes::CREATED, $output['statusCode']);
61
        $this->assertArrayNotHasKey('body', $output);
62
    }
63
}
64