Passed
Push — master ( 4b2c1a...a53d55 )
by Maximilian
02:53
created

HelpRequestHandlerTest   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 27
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 2
eloc 16
c 0
b 0
f 0
dl 0
loc 27
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A testNotSupportsRequest() 0 7 1
A testSupportsRequestAndOutput() 0 16 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace MaxBeckers\AmazonAlexa\Test\RequestHandler\Basic;
6
7
use MaxBeckers\AmazonAlexa\Helper\ResponseHelper;
8
use MaxBeckers\AmazonAlexa\Request\Request;
9
use MaxBeckers\AmazonAlexa\RequestHandler\Basic\HelpRequestHandler;
10
use MaxBeckers\AmazonAlexa\Response\Response;
11
use MaxBeckers\AmazonAlexa\Response\ResponseBody;
12
use PHPUnit\Framework\TestCase;
13
14
class HelpRequestHandlerTest extends TestCase
15
{
16
    public function testSupportsRequestAndOutput(): void
17
    {
18
        $responseHelper = $this->getMockBuilder(ResponseHelper::class)
19
                               ->disableOriginalConstructor()
20
                               ->getMock();
21
22
        $request = Request::fromAmazonRequest('{"request":{"type":"IntentRequest", "requestId":"requestId", "timestamp":"' . time() . '", "locale":"en-US", "intent":{"name":"AMAZON.HelpIntent"}}}', 'true', 'true');
23
        $output = 'Just a simple Test';
24
        $requestHandler = new HelpRequestHandler($responseHelper, $output, ['my_skill_id']);
25
26
        $responseBody = new ResponseBody();
27
        $responseBody->outputSpeech = $output;
28
        $responseHelper->expects(static::once())->method('respond')->willReturn(new Response([], '1.0', $responseBody));
29
30
        static::assertTrue($requestHandler->supportsRequest($request));
31
        static::assertSame($output, $requestHandler->handleRequest($request)->response->outputSpeech);
0 ignored issues
show
Bug introduced by
Accessing outputSpeech on the interface MaxBeckers\AmazonAlexa\R...e\ResponseBodyInterface suggest that you code against a concrete implementation. How about adding an instanceof check?
Loading history...
32
    }
33
34
    public function testNotSupportsRequest(): void
35
    {
36
        $request = Request::fromAmazonRequest('{"request":{"type":"IntentRequest", "requestId":"requestId", "timestamp":"' . time() . '", "locale":"en-US", "intent":{"name":"InvalidIntent"}}}', 'true', 'true');
37
        $output = 'Just a simple Test';
38
        $requestHandler = new HelpRequestHandler(new ResponseHelper(), $output, ['my_skill_id']);
39
40
        static::assertFalse($requestHandler->supportsRequest($request));
41
    }
42
}
43