1 | <?php |
||
12 | class MiddlewarePipelineSpec extends ObjectBehavior |
||
13 | { |
||
14 | function it_adds_middleware_and_processes_pipeline( |
||
15 | ServerRequestInterface $request, |
||
16 | Middleware $middleware, |
||
17 | Delegate $delegate, |
||
18 | ResponseInterface $delegateResponse, |
||
19 | ResponseInterface $middlewareResponse |
||
20 | ) { |
||
21 | $delegate->next($request)->willReturn($delegateResponse); |
||
22 | $middleware->process($request, $delegate)->willReturn($middlewareResponse); |
||
23 | $pipeline = $this->withMiddleware($middleware); |
||
24 | $pipeline->process($request, $delegate)->shouldBe($middlewareResponse); |
||
25 | $this->process($request, $delegate)->shouldBe($delegateResponse); |
||
26 | } |
||
27 | |||
28 | function it_is_initializable() |
||
29 | { |
||
30 | $this->shouldHaveType(\Venta\Contracts\Routing\MiddlewarePipeline::class); |
||
31 | } |
||
32 | |||
33 | function it_processes_empty_pipeline( |
||
34 | ServerRequestInterface $request, |
||
35 | Delegate $delegate, |
||
36 | ResponseInterface $response |
||
37 | ) { |
||
38 | $delegate->next($request)->willReturn($response); |
||
39 | $this->process($request, $delegate)->shouldBe($response); |
||
40 | } |
||
41 | |||
42 | function it_respects_middleware_sequence( |
||
43 | Middleware $m1, |
||
44 | Middleware $m2, |
||
45 | Middleware $m3, |
||
46 | ServerRequestInterface $request, |
||
47 | Delegate $delegate, |
||
48 | ResponseInterface $response, |
||
49 | ResponseInterface $lastResponse |
||
50 | ) { |
||
51 | $m1->process($request, Argument::type(Delegate::class))->will(function ($args) use ($lastResponse, $response) { |
||
52 | $args[1]->next($args[0]); |
||
53 | |||
54 | return $lastResponse; |
||
55 | })->shouldBeCalled(); |
||
56 | $m2->process($request, Argument::type(Delegate::class))->will(function ($args) { |
||
57 | return $args[1]->next($args[0]); |
||
58 | })->shouldBeCalled(); |
||
59 | $m3->process($request, Argument::type(Delegate::class))->will(function ($args) { |
||
60 | return $args[1]->next($args[0]); |
||
61 | })->shouldBeCalled(); |
||
62 | $delegate->next($request)->willReturn($response)->shouldBeCalled(); |
||
63 | |||
64 | $this |
||
65 | ->withMiddleware($m1) |
||
66 | ->withMiddleware($m2) |
||
67 | ->withMiddleware($m3) |
||
68 | ->process($request, $delegate)->shouldBe($lastResponse); |
||
69 | } |
||
70 | |||
71 | } |
||
72 |