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

UniversalRouteTestClass::helloWorldOutput()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 1 Features 0
Metric Value
eloc 1
c 1
b 1
f 0
dl 0
loc 3
rs 10
cc 1
nc 1
nop 0
1
<?php
2
declare(strict_types = 1);
3
namespace Mezon\Router\Tests\Base;
4
5
use Mezon\Router\Tests\Utils;
6
use PHPUnit\Framework\TestCase;
7
8
/**
9
 *
10
 * @psalm-suppress PropertyNotSetInConstructor
11
 */
12
abstract class UniversalRouteTestClass extends StaticRoutesTestClass
13
{
14
15
    const HELLO_WORLD = 'Hello world!';
16
17
    const HELLO_STATIC_WORLD = 'Hello static world!';
18
19
    const HELLO_STATIC_WORLD_METHOD = '\Mezon\Router\Tests\StaticRoutesUnitTest::staticHelloWorldOutput';
20
21
    use Utils;
22
23
    /**
24
     * Function simply returns string
25
     */
26
    public function helloWorldOutput(): string
27
    {
28
        return UniversalRouteTestClass::HELLO_WORLD;
29
    }
30
31
    /**
32
     * Function simply returns string
33
     */
34
    static public function staticHelloWorldOutput(): string
35
    {
36
        return UniversalRouteTestClass::HELLO_STATIC_WORLD;
37
    }
38
39
    /**
40
     * Default setup
41
     *
42
     * {@inheritdoc}
43
     * @see TestCase::setUp()
44
     */
45
    public function setUp(): void
46
    {
47
        $_SERVER['REQUEST_METHOD'] = 'GET';
48
    }
49
50
    /**
51
     * Method returns data sets
52
     *
53
     * @return array testing data
54
     */
55
    public function universalRouteDataProvider(): array
56
    {
57
        $setup = function (): array {
58
            return [
59
                [
60
                    '/hello/[s:name]/',
61
                    function (): string {
62
                        return 'hello';
63
                    }
64
                ],
65
                [
66
                    '*',
67
                    function (): string {
68
                        return 'universal';
69
                    }
70
                ],
71
                [
72
                    '/bye/[s:name]/',
73
                    function (): string {
74
                        return 'bye';
75
                    }
76
                ]
77
            ];
78
        };
79
80
        return [
81
            [
82
                $setup(),
83
                '/hello/joe/',
84
                'hello'
85
            ],
86
            [
87
                $setup(),
88
                '/bye/joe/',
89
                'bye'
90
            ],
91
            [
92
                $setup(),
93
                '/unexisting/',
94
                'universal'
95
            ]
96
        ];
97
    }
98
99
    /**
100
     * Testing one processor for all routes
101
     *
102
     * @param
103
     *            list<array{0: string, 1: callable}> $routes
104
     *            list of routes
105
     * @param string $uri
106
     *            uri to be requested
107
     * @param string $result
108
     *            expected result
109
     * @dataProvider universalRouteDataProvider
110
     */
0 ignored issues
show
Bug introduced by
The type Mezon\Router\Tests\Base\list was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
111
    public function testUniversalRoute(array $routes, string $uri, string $result): void
112
    {
113
        // setup
114
        $router = $this->getRouter();
115
116
        /** @var array{0: string, 1: callable} $route */
117
        foreach ($routes as $route) {
118
            $router->addRoute($route[0], $route[1]);
119
        }
120
121
        // test body
122
        $content = (string) $router->callRoute($uri);
123
124
        // assertions
125
        $this->assertEquals($result, $content);
126
    }
127
}
128