Passed
Push — master ( 528f97...5cd088 )
by Petr
03:27 queued 01:21
created

SourcesTest::testRequest()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 7
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 2
eloc 5
c 1
b 0
f 0
nc 2
nop 5
dl 0
loc 7
rs 10
1
<?php
2
3
namespace BasicTests;
4
5
6
use CommonTestClass;
7
use kalanis\kw_routed_paths\Sources;
8
9
10
class SourcesTest extends CommonTestClass
11
{
12
    public function testBasic(): void
13
    {
14
        $params = new Sources\Arrays(['abc'=>'def','ghi'=>'jkl','mno'=>'pqr',]);
15
        $this->assertEquals(['abc'=>'def','ghi'=>'jkl','mno'=>'pqr',], $params->getData());
16
    }
17
18
    public function testArrayAccess1(): void
19
    {
20
        $data = new \ArrayObject([
21
            'abc'=>'/Sources/Request.php?abc=def&ghi[]=jkl&ghi[]=mno&pqr',
22
            'ghi'=>'/web/ms:dfhfdh/l:fdgh/g:/definite/unknown/?abc=def&ghi[]=jkl&ghi[]=mno&pqr&vars=1',
23
            'mno'=>'/definite/unknown/?abc=def&ghi[]=jkl&ghi[]=mno&pqr&vars=1&lang=rrr',
24
        ]);
25
26
        $params = new Sources\ArrayAccess($data, 'not in source data', '');
27
        $this->assertEquals([
28
            'staticPath' => null, 'virtualPrefix' => null, 'path' => '',
29
        ], $params->getData());
30
    }
31
32
    public function testArrayAccess2(): void
33
    {
34
        $data = new \ArrayObject([
35
            'abc'=>'/Sources/Request.php?abc=def&ghi[]=jkl&ghi[]=mno&pqr',
36
            'ghi'=>'/web/ms:dfhfdh/l:fdgh/g:/definite/unknown/?abc=def&ghi[]=jkl&ghi[]=mno&pqr&vars=1',
37
            'mno'=>'/definite/unknown/?abc=def&ghi[]=jkl&ghi[]=mno&pqr&vars=1&lang=rrr',
38
        ]);
39
40
        $params = new Sources\ArrayAccess($data, 'ghi');
41
        $this->assertEquals([
42
            'staticPath' => '/web/ms:dfhfdh/l:fdgh/g:/definite/unknown/',
43
            'virtualPrefix' => null, 'abc'=>'def', 'ghi' => ['jkl', 'mno'],
44
            'pqr' => '', 'vars' => '1'
45
        ], $params->getData());
46
    }
47
48
    /**
49
     * @param string $uri
50
     * @param string|null $virtualDir
51
     * @param string $key
52
     * @param bool $wantExistence
53
     * @param string|string[]|null $value
54
     * @dataProvider requestProvider
55
     */
56
    public function testRequest(string $uri, ?string $virtualDir, string $key, bool $wantExistence, $value)
57
    {
58
        $params = new Sources\Request($uri, $virtualDir);
59
        $result = $params->getData();
60
        $this->assertEquals($wantExistence, isset($result[$key]));
61
        if ($wantExistence) {
62
            $this->assertEquals($value, $result[$key]);
63
        }
64
    }
65
66
    public function requestProvider(): array
67
    {
68
        return [
69
            ['/Sources/Request.php?abc=def&ghi[]=jkl&ghi[]=mno&pqr', null, 'abc', true, 'def'],
70
            ['/Sources/Request.php?abc=def&ghi[]=jkl&ghi[]=mno&pqr', null, 'lang', false, null],
71
            ['/Sources/Request.php?abc=def&ghi[]=jkl&ghi[]=mno&pqr', null, 'staticPath', true, '/Sources/Request.php'],
72
            ['/Sources/Request.php?abc=def&ghi[]=jkl&ghi[]=mno&pqr', null, 'path', false, null],
73
            ['/Sources/Request.php?abc=def&ghi[]=jkl&ghi[]=mno&pqr', '', 'staticPath', false, null],
74
            ['/Sources/Request.php?abc=def&ghi[]=jkl&ghi[]=mno&pqr', '', 'path', true, '/Sources/Request.php'],
75
            ['/Sources/Request.php?abc=def&ghi[]=jkl&ghi[]=mno&pqr', '', 'ghi', true, ['jkl', 'mno']],
76
            ['/web/ms:dfhfdh/l:fdgh/g:/definite/unknown/?abc=def&ghi[]=jkl&ghi[]=mno&pqr&vars=1', null, 'lang', false, null],
77
            ['/web/ms:dfhfdh/l:fdgh/g:/definite/unknown/?abc=def&ghi[]=jkl&ghi[]=mno&pqr&vars=1&lang=rrr', null, 'abc', true, 'def'],
78
            ['/web/ms:dfhfdh/l:fdgh/g:/definite/unknown/?abc=def&ghi[]=jkl&ghi[]=mno&pqr&vars=1', null, 'staticPath', true, '/web/ms:dfhfdh/l:fdgh/g:/definite/unknown/'],
79
            ['/web/ms:dfhfdh/l:fdgh/g:/definite/unknown/?abc=def&ghi[]=jkl&ghi[]=mno&pqr&vars=1', null, 'path', false, null],
80
            ['/web/ms:dfhfdh/l:fdgh/g:/definite/unknown/?abc=def&ghi[]=jkl&ghi[]=mno&pqr&vars=1', null, 'ghi', true, ['jkl', 'mno']],
81
82
            ['/web/ms:dfhfdh/l:fdgh/g:/definite/unknown/?abc=def&ghi[]=jkl&ghi[]=mno&pqr&vars=1', '', 'staticPath', false, null],
83
            ['/web/ms:dfhfdh/l:fdgh/g:/definite/unknown/?abc=def&ghi[]=jkl&ghi[]=mno&pqr&vars=1', '', 'path', true, 'definite/unknown/'],
84
            ['/web/ms:dfhfdh/l:fdgh/g:/definite/unknown/?abc=def&ghi[]=jkl&ghi[]=mno&pqr&vars=1&lang=rrr', 'web/', 'abc', true, 'def'],
85
            ['/web/ms:dfhfdh/l:fdgh/g:/definite/unknown/?abc=def&ghi[]=jkl&ghi[]=mno&pqr&vars=1&lang=rrr', 'web/', 'lang', true, 'rrr'],
86
            ['/web/definite/unknown/?abc=def&ghi[]=jkl&ghi[]=mno&pqr&vars=1&lang=rrr', 'web/', 'pqr', true, ''],
87
            ['/web/definite/unknown/?abc=def&ghi[]=jkl&ghi[]=mno&pqr&vars=1&lang=rrr', 'web/', 'path', true, 'definite/unknown/'],
88
            ['/web/m:stgs/u:gnfnj/g:/definite/unknown/?abc=def&ghi[]=jkl&ghi[]=mno&pqr', 'web/', 'module', true, 'stgs'],
89
            ['/web/m:stgs/u:gnfnj/g:/definite/unknown/?abc=def&ghi[]=jkl&ghi[]=mno&pqr&vars=1&lang=rrr', 'system/', 'staticPath', true, '/web/m:stgs/u:gnfnj/g:/definite/unknown/'],
90
            ['/web/m:stgs/u:gnfnj/g:/definite/unknown/?abc=def&ghi[]=jkl&ghi[]=mno&pqr&vars=1&lang=rrr', 'system/', 'path', false, null],
91
            ['/m:stgs/u:gnfnj/g:/definite/unknown/?abc=def&ghi[]=jkl&ghi[]=mno&pqr', '/', 'module', true, 'stgs'],
92
93
            ['/m:stgs/u:gnfnj/g:/definite/unknown/?abc=def&ghi[]=jkl&ghi[]=mno&pqr&vars=1&lang=rrr', '/', 'staticPath', true, ''],
94
            ['/definite/unknown/?abc=def&ghi[]=jkl&ghi[]=mno&pqr&vars=1&lang=rrr', '/', 'staticPath', true, ''],
95
            ['/definite/unknown/?abc=def&ghi[]=jkl&ghi[]=mno&pqr&vars=1&lang=rrr', '/', 'path', true, 'definite/unknown/'],
96
            ['/definite/unknown/?abc=def&ghi[]=jkl&ghi[]=mno&pqr&vars=1&lang=rrr', '', 'staticPath', false, null],
97
            ['/definite/unknown/?abc=def&ghi[]=jkl&ghi[]=mno&pqr&vars=1&lang=rrr', '', 'path', true, '/definite/unknown/'],
98
            ['/definite/unknown/?abc=def&ghi[]=jkl&ghi[]=mno&pqr&vars=1&lang=rrr', null, 'staticPath', true, '/definite/unknown/'],
99
            ['/definite/unknown/?abc=def&ghi[]=jkl&ghi[]=mno&pqr&vars=1&lang=rrr', null, 'path', false, null],
100
        ];
101
    }
102
}
103