Passed
Push — master ( a4ddd3...82bd79 )
by Alex
06:44
created

ReverseRouteTestClass   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 78
Duplicated Lines 0 %

Importance

Changes 1
Bugs 1 Features 0
Metric Value
wmc 3
eloc 21
c 1
b 1
f 0
dl 0
loc 78
rs 10

3 Methods

Rating   Name   Duplication   Size   Complexity  
A testFetchUnexistingRouteByName() 0 10 1
A testReverseRouteByName() 0 14 1
A reverseRouteByNameDataProvider() 0 26 1
1
<?php
2
declare(strict_types = 1);
3
namespace Mezon\Router\Tests\Base;
4
5
/**
6
 *
7
 * @psalm-suppress PropertyNotSetInConstructor
8
 */
9
abstract class ReverseRouteTestClass extends BaseRouterUnitTestClass
10
{
11
12
    /**
13
     * Data provider for the test testReverseRouteByName
14
     *
15
     * @return array test data
16
     */
17
    public function reverseRouteByNameDataProvider(): array
18
    {
19
        return [
20
            [
21
                'named-route-url',
22
                [],
23
                'named-route-url'
24
            ],
25
            [
26
                'route-with-params/[i:id]',
27
                [
28
                    'id' => '123'
29
                ],
30
                'route-with-params/123'
31
            ],
32
            [
33
                'route-with-foo/[i:id]',
34
                [
35
                    'foo' => '123'
36
                ],
37
                'route-with-foo/[i:id]'
38
            ],
39
            [
40
                'route-no-params/[i:id]',
41
                [],
42
                'route-no-params/[i:id]'
43
            ]
44
        ];
45
    }
46
47
    /**
48
     * Testing reverse route by it's name
49
     *
50
     * @param string $route
51
     *            route
52
     * @param string[] $parameters
53
     *            parameters to be substituted
54
     * @param string $extectedResult
55
     *            quite obviuous to describe it here )
56
     * @dataProvider reverseRouteByNameDataProvider
57
     */
58
    public function testReverseRouteByName(string $route, array $parameters, string $extectedResult): void
59
    {
60
        // setup
61
        $router = $this->getRouter();
62
        $router->addRoute($route, function () {
63
            return 'named route result';
64
        }, 'GET', 'named-route');
65
66
        // test body
67
        /** @var string $url */
68
        $url = $router->reverse('named-route', $parameters);
69
70
        // assertions
71
        $this->assertEquals($extectedResult, $url);
72
    }
73
74
    /**
75
     * Trying to fetch unexisting route by name
76
     */
77
    public function testFetchUnexistingRouteByName(): void
78
    {
79
        // setup
80
        $router = $this->getRouter();
81
82
        // assertions
83
        $this->expectException(\Exception::class);
84
85
        // test body
86
        $router->getRouteByName('unexisting-name');
87
    }
88
}
89