Passed
Push — master ( b0cf56...bbf452 )
by Eugene
09:13
created

testAppendAppendsMiddleware()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 11
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 7
nc 1
nop 0
dl 0
loc 11
rs 10
c 1
b 0
f 0
1
<?php
2
3
/**
4
 * This file is part of the tarantool/client package.
5
 *
6
 * (c) Eugene Leonovich <[email protected]>
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
12
declare(strict_types=1);
13
14
namespace Tarantool\Client\Tests\Unit\Handler;
15
16
use PHPUnit\Framework\TestCase;
17
use Tarantool\Client\Handler\Handler;
18
use Tarantool\Client\Handler\MiddlewareHandler;
19
use Tarantool\Client\Request\Request;
20
use Tarantool\Client\Tests\SpyMiddleware;
21
use Tarantool\PhpUnit\Client\TestDoubleClient;
22
23
final class MiddlewareHandlerTest extends TestCase
24
{
25
    use TestDoubleClient;
26
27
    /**
28
     * @var Request
29
     */
30
    private $request;
31
32
    /**
33
     * @var Handler
34
     */
35
    private $handler;
36
37
    protected function setUp() : void
38
    {
39
        $this->request = $this->createMock(Request::class);
0 ignored issues
show
Documentation Bug introduced by
It seems like $this->createMock(Tarant...Request\Request::class) of type PHPUnit\Framework\MockObject\MockObject is incompatible with the declared type Tarantool\Client\Request\Request of property $request.

Our type inference engine has found an assignment to a property that is incompatible with the declared type of that property.

Either this assignment is in error or the assigned type should be added to the documentation/type hint for that property..

Loading history...
40
        $this->handler = $this->createDummyClient()->getHandler();
41
    }
42
43
    public function testAppendedMiddlewareAreExecutedInFifoOrder() : void
44
    {
45
        $trace = new \ArrayObject();
46
        $middleware1 = SpyMiddleware::fromTraceId(1, $trace);
47
        $middleware2 = SpyMiddleware::fromTraceId(2, $trace);
48
49
        $handler = MiddlewareHandler::append($this->handler, [$middleware1, $middleware2]);
50
        $handler->handle($this->request);
51
52
        self::assertSame([1, 2], $trace->getArrayCopy());
53
    }
54
55
    public function testAppendAppendsMiddleware() : void
56
    {
57
        $trace = new \ArrayObject();
58
        $middleware1 = SpyMiddleware::fromTraceId(1, $trace);
59
        $middleware2 = SpyMiddleware::fromTraceId(2, $trace);
60
61
        $handler = MiddlewareHandler::append($this->handler, [$middleware1]);
62
        $handler = MiddlewareHandler::append($handler, [$middleware2]);
63
        $handler->handle($this->request);
64
65
        self::assertSame([1, 2], $trace->getArrayCopy());
66
    }
67
68
    public function testPrependPrependsMiddleware() : void
69
    {
70
        $trace = new \ArrayObject();
71
        $middleware1 = SpyMiddleware::fromTraceId(1, $trace);
72
        $middleware2 = SpyMiddleware::fromTraceId(2, $trace);
73
74
        $handler = MiddlewareHandler::append($this->handler, [$middleware1]);
75
        $handler = MiddlewareHandler::prepend($handler, [$middleware2]);
76
        $handler->handle($this->request);
77
78
        self::assertSame([2, 1], $trace->getArrayCopy());
79
    }
80
81
    public function testMiddlewareRemainsAfterExecution() : void
82
    {
83
        $middleware = SpyMiddleware::fromTraceId(1);
84
85
        $handler = MiddlewareHandler::append($this->handler, [$middleware]);
86
        $handler->handle($this->request);
87
        $handler->handle($this->request);
88
89
        self::assertSame([1, 1], $middleware->getTraceLogArray());
90
    }
91
}
92