Passed
Push — master ( dbfb5e...e760f7 )
by Alexander
11:28
created

anonymous//tests/MatchinResultTest.php$0   A

Complexity

Total Complexity 1

Size/Duplication

Total Lines 9
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 1

Importance

Changes 0
Metric Value
wmc 1
lcom 0
cbo 1
dl 0
loc 9
rs 10
c 0
b 0
f 0

1 Method

Rating   Name   Duplication   Size   Complexity  
A MatchinResultTest.php$0 ➔ process() 0 6 1
1
<?php
2
3
4
namespace Yiisoft\Router\Tests;
5
6
7
use Nyholm\Psr7\Response;
8
use Nyholm\Psr7\ServerRequest;
9
use PHPUnit\Framework\TestCase;
10
use Psr\Http\Message\ResponseInterface;
11
use Psr\Http\Message\ServerRequestInterface;
12
use Psr\Http\Server\MiddlewareInterface;
13
use Psr\Http\Server\RequestHandlerInterface;
14
use Yiisoft\Router\MatchingResult;
15
use Yiisoft\Router\Method;
16
use Yiisoft\Router\Route;
17
18
class MatchinResultTest extends TestCase
19
{
20
    public function testFromSucess()
21
    {
22
        $route = Route::get('/{name}');
23
24
        $result = MatchingResult::fromSuccess($route, ['name' => 'Mehdi']);
25
        $this->assertTrue($result->isSuccess());
26
        $this->assertSame(['name' => 'Mehdi'], $result->parameters());
27
    }
28
29
    public function testFromFailure()
30
    {
31
        $result = MatchingResult::fromFailure([Method::GET, Method::HEAD]);
32
        $this->assertFalse($result->isSuccess());
33
    }
34
35
    public function testProcessSuccess()
36
    {
37
        $route = Route::post('/')->to($this->getMiddleware());
38
        $result = MatchingResult::fromSuccess($route, []);
39
        $request = new ServerRequest('POST', '/');
40
41
        $response = $result->process($request, $this->getRequestHandler());
42
        $this->assertSame(201, $response->getStatusCode());
43
    }
44
45
    public function testProcessFailure()
46
    {
47
        $request = new ServerRequest('POST', '/');
48
49
        $result = MatchingResult::fromFailure([Method::GET, Method::HEAD]);
50
        $response = $result->process($request, $this->getRequestHandler());
51
52
        $this->assertSame(404, $response->getStatusCode());
53
    }
54
55
    private function getMiddleware(): MiddlewareInterface
56
    {
57
        return new class implements MiddlewareInterface {
58
            public function process(
59
              ServerRequestInterface $request,
60
              RequestHandlerInterface $handler
61
            ): ResponseInterface
62
            {
63
                return (new Response())->withStatus(201);
64
            }
65
        };
66
    }
67
68
    private function getRequestHandler(): RequestHandlerInterface
69
    {
70
        return new class implements RequestHandlerInterface {
71
            public function handle(ServerRequestInterface $request): ResponseInterface
72
            {
73
                return new Response(404);
74
            }
75
        };
76
    }
77
}