Passed
Branch release/v2.0.0 (caca50)
by Anatoly
02:10
created

QueueableRequestHandlerTest   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 74
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 4
eloc 35
c 1
b 0
f 0
dl 0
loc 74
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\QueueableRequestHandler;
11
use Sunrise\Http\Router\Tests\Fixture;
12
use Sunrise\Http\ServerRequest\ServerRequestFactory;
13
14
/**
15
 * QueueableRequestHandlerTest
16
 */
17
class QueueableRequestHandlerTest extends TestCase
18
{
19
20
    /**
21
     * @return void
22
     */
23
    public function testConstructor() : void
24
    {
25
        $endpoint = new Fixture\BlankRequestHandler();
26
        $requestHandler = new QueueableRequestHandler($endpoint);
27
28
        $this->assertInstanceOf(RequestHandlerInterface::class, $requestHandler);
29
    }
30
31
    /**
32
     * @return void
33
     */
34
    public function testHandle() : void
35
    {
36
        $endpoint = new Fixture\BlankRequestHandler();
37
        $requestHandler = new QueueableRequestHandler($endpoint);
38
39
        $request = (new ServerRequestFactory)->createServerRequest('GET', '/');
40
        $requestHandler->handle($request);
41
42
        $this->assertTrue($endpoint->isRunned());
43
    }
44
45
    /**
46
     * @return void
47
     */
48
    public function testHandleWithMiddlewares() : void
49
    {
50
        $middlewares = [
51
            new Fixture\BlankMiddleware(),
52
            new Fixture\BlankMiddleware(),
53
            new Fixture\BlankMiddleware(),
54
        ];
55
56
        $endpoint = new Fixture\BlankRequestHandler();
57
        $requestHandler = new QueueableRequestHandler($endpoint);
58
        $requestHandler->add(...$middlewares);
59
60
        $request = (new ServerRequestFactory)->createServerRequest('GET', '/');
61
        $requestHandler->handle($request);
62
63
        $this->assertTrue($middlewares[0]->isRunned());
64
        $this->assertTrue($middlewares[1]->isRunned());
65
        $this->assertTrue($middlewares[2]->isRunned());
66
        $this->assertTrue($endpoint->isRunned());
67
    }
68
69
    /**
70
     * @return void
71
     */
72
    public function testHandleWithBrokenMiddleware() : void
73
    {
74
        $middlewares = [
75
            new Fixture\BlankMiddleware(),
76
            new Fixture\BlankMiddleware(true),
77
            new Fixture\BlankMiddleware(),
78
        ];
79
80
        $endpoint = new Fixture\BlankRequestHandler();
81
        $requestHandler = new QueueableRequestHandler($endpoint);
82
        $requestHandler->add(...$middlewares);
83
84
        $request = (new ServerRequestFactory)->createServerRequest('GET', '/');
85
        $requestHandler->handle($request);
86
87
        $this->assertTrue($middlewares[0]->isRunned());
88
        $this->assertTrue($middlewares[1]->isRunned());
89
        $this->assertFalse($middlewares[2]->isRunned());
90
        $this->assertFalse($endpoint->isRunned());
91
    }
92
}
93