/var/www/hkosl.com/b2b2c/webadmin/libraies/klein/klein/tests/Klein/Tests/RouteFactoryTest.php


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
<?php
/**
 * Klein (klein.php) - A fast & flexible router for PHP
 *
 * @author      Chris O'Hara <cohara87@gmail.com>
 * @author      Trevor Suarez (Rican7) (contributor and v2 refactorer)
 * @copyright   (c) Chris O'Hara
 * @link        https://github.com/klein/klein.php
 * @license     MIT
 */

namespace Klein\Tests;

use 
Klein\Route;
use 
Klein\RouteFactory;

/**
 * RouteFactoryTest
 */
class RouteFactoryTest extends AbstractKleinTest
{

    
/**
     * Constants
     */

    
const TEST_CALLBACK_MESSAGE 'yay';


    
/**
     * Helpers
     */

    
protected function getTestCallable($message self::TEST_CALLBACK_MESSAGE)
    {
        return function () use (
$message) {
            return 
$message;
        };
    }


    
/**
     * Tests
     */

    
public function testBuildBasic(
        
$test_namespace null,
        
$test_path null,
        
$test_paths_match true,
        
$should_match true
    
) {
        
// Test data
        
$test_path is_string($test_path) ? $test_path '/test';
        
$test_callable $this->getTestCallable();


        
$factory = new RouteFactory($test_namespace);

        
$route $factory->build(
            
$test_callable,
            
$test_path
        
);

        
$this->assertTrue($route instanceof Route);
        
$this->assertNull($route->getMethod());
        
$this->assertNull($route->getName());
        
$this->assertSame($test_callable(), $route());

        
$this->assertSame($should_match$route->getCountMatch());

        if (
$test_paths_match) {
            
$this->assertSame($test_path$route->getPath());
        }
    }

    public function 
testBuildWithNamespacedPath()
    {
        
// Test data
        
$test_namespace '/users';
        
$test_path '/test';

        
$this->testBuildBasic($test_namespace$test_pathfalse);
    }

    public function 
testBuildWithNamespacedCatchAllPath()
    {
        
// Test data
        
$test_namespace '/users';
        
$test_path '*';

        
$this->testBuildBasic($test_namespace$test_pathfalsefalse);
    }

    public function 
testBuildWithNamespacedNullPath()
    {
        
// Test data
        
$test_namespace '/users';

        
$this->testBuildBasic($test_namespacenullfalse);
    }

    public function 
testBuildWithNamespacedEmptyPath()
    {
        
// Test data
        
$test_namespace '/users';
        
$test_path '';

        
$this->testBuildBasic($test_namespace$test_pathfalsetrue);
    }

    public function 
testBuildWithCustomRegexPath()
    {
        
// Test data
        
$test_path '@/test';

        
$this->testBuildBasic(null$test_path);
    }

    public function 
testBuildWithCustomRegexNamespacedPath()
    {
        
// Test data
        
$test_namespace '/users';
        
$test_path '@/test';

        
$this->testBuildBasic($test_namespace$test_pathfalse);
    }

    public function 
testBuildWithCustomNegatedRegexPath()
    {
        
// Test data
        
$test_path '!@/test';

        
$this->testBuildBasic(null$test_pathfalse);
    }

    public function 
testBuildWithCustomNegatedAnchoredRegexPath()
    {
        
// Test data
        
$test_path '!@^/test';

        
$this->testBuildBasic(null$test_pathfalse);
    }
}