Passed
Branch release/v2.0.0 (caca50)
by Anatoly
03:59
created

RoutableRequestHandlerTest   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 52
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 3
eloc 24
c 1
b 0
f 0
dl 0
loc 52
rs 10
1
<?php declare(strict_types=1);
2
3
namespace Sunrise\Http\Router\Tests\RequestHandler;
4
5
/**
6
 * Import classes
7
 */
8
use PHPUnit\Framework\TestCase;
9
use Psr\Http\Server\RequestHandlerInterface;
10
use Sunrise\Http\Router\RequestHandler\RoutableRequestHandler;
11
use Sunrise\Http\Router\Tests\Fixture;
12
use Sunrise\Http\ServerRequest\ServerRequestFactory;
13
14
/**
15
 * RoutableRequestHandlerTest
16
 */
17
class RoutableRequestHandlerTest extends TestCase
18
{
19
20
    /**
21
     * @return void
22
     */
23
    public function testConstructor() : void
24
    {
25
        $testRoute = new Fixture\TestRoute();
26
        $requestHandler = new RoutableRequestHandler($testRoute);
27
28
        $this->assertInstanceOf(RequestHandlerInterface::class, $requestHandler);
29
    }
30
31
    /**
32
     * @return void
33
     */
34
    public function testHandle() : void
35
    {
36
        $testRoute = new Fixture\TestRoute();
37
        $requestHandler = new RoutableRequestHandler($testRoute);
38
39
        $request = (new ServerRequestFactory)->createServerRequest('GET', '/');
40
        $requestHandler->handle($request);
41
42
        $this->assertTrue($testRoute->getMiddlewares()[0]->isRunned());
43
        $this->assertTrue($testRoute->getMiddlewares()[1]->isRunned());
44
        $this->assertTrue($testRoute->getMiddlewares()[2]->isRunned());
45
        $this->assertTrue($testRoute->getRequestHandler()->isRunned());
46
47
        $expectedAttributes = [RoutableRequestHandler::ATTR_NAME_FOR_ROUTE_NAME => $testRoute->getName()];
48
        $expectedAttributes += $testRoute->getAttributes();
49
50
        $this->assertSame($expectedAttributes, $testRoute->getRequestHandler()->getAttributes());
51
    }
52
53
    /**
54
     * @return void
55
     */
56
    public function testHandleWithBrokenMiddleware() : void
57
    {
58
        $testRoute = new Fixture\TestRoute(Fixture\TestRoute::WITH_BROKEN_MIDDLEWARE);
59
        $requestHandler = new RoutableRequestHandler($testRoute);
60
61
        $request = (new ServerRequestFactory)->createServerRequest('GET', '/');
62
        $requestHandler->handle($request);
63
64
        $this->assertTrue($testRoute->getMiddlewares()[0]->isRunned());
65
        $this->assertTrue($testRoute->getMiddlewares()[1]->isRunned());
66
        $this->assertFalse($testRoute->getMiddlewares()[2]->isRunned());
67
        $this->assertFalse($testRoute->getRequestHandler()->isRunned());
68
        $this->assertSame([], $testRoute->getRequestHandler()->getAttributes());
69
    }
70
}
71