HasMatcherTraitTest::dataRouteDynamic()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 10
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 1 Features 0
Metric Value
cc 1
eloc 8
nc 1
nop 0
dl 0
loc 10
rs 10
c 1
b 1
f 0
1
<?php
2
3
namespace Nip\Router\Tests\Router\Traits;
4
5
use Nip\Request;
6
use Nip\Router\Route\Route;
7
use Nip\Router\RouteFactory;
8
use Nip\Router\Router;
9
use Nip\Router\Tests\AbstractTest;
10
use Nip\Router\Tests\Fixtures\Application\Library\Router\Route\StandardRoute;
11
use Symfony\Component\Routing\Exception\ResourceNotFoundException;
12
13
/**
14
 * Class HasMatcherTraitTest
15
 * @package Nip\Router\Tests\Router\Traits
16
 */
17
class HasMatcherTraitTest extends AbstractTest
18
{
19
    public function testNotFound()
20
    {
21
        $router = new Router();
22
        $router->initRouteCollection();
23
        self::expectException(ResourceNotFoundException::class);
0 ignored issues
show
Bug Best Practice introduced by
The method PHPUnit\Framework\TestCase::expectException() is not static, but was called statically. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

23
        self::/** @scrutinizer ignore-call */ 
24
              expectException(ResourceNotFoundException::class);
Loading history...
24
25
        $request = Request::create('/404');
26
        $router->matchRequest($request);
27
    }
28
29
    public function testRouteLiteral()
30
    {
31
        $router = new Router();
32
        $router->initRouteCollection();
33
        $collection = $router->getRoutes();
34
35
        RouteFactory::generateLiteralRoute($collection, "admin.index", Route::class, "/admin", "/index");
36
        RouteFactory::generateLiteralRoute($collection, "api.index", Route::class, "/api", "/index");
37
38
        $request = Request::create('/api/index');
39
        $params = $router->matchRequest($request);
40
        self::assertEquals(['_route' => 'api.index'], $params);
41
42
        $currentRoute = $router->getCurrent();
43
        self::assertEquals('api.index', $currentRoute);
44
45
        $request = Request::create('/admin/index');
46
        $router->matchRequest($request);
47
        self::assertEquals('admin.index', $router->getCurrent());
48
    }
49
50
    /**
51
     * @dataProvider dataRouteDynamic
52
     */
53
    public function testRouteDynamic($uri, $routeName, $params)
0 ignored issues
show
Unused Code introduced by
The parameter $routeName is not used and could be removed. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-unused  annotation

53
    public function testRouteDynamic($uri, /** @scrutinizer ignore-unused */ $routeName, $params)

This check looks for parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
54
    {
55
        $router = new Router();
56
        $router->initRouteCollection();
57
        $collection = $router->getRoutes();
58
59
        RouteFactory::generateStandardRoute(
60
            $collection,
61
            "admin.standard",
62
            StandardRoute::class,
63
            "/admin",
64
            '/:controller/:action', ['module' => 'admin']);
65
        RouteFactory::generateStandardRoute(
66
            $collection, "api.standard",
67
            StandardRoute::class,
68
            "/api",
69
            '/:controller/:action', ['module' => 'api']);
70
71
        RouteFactory::generateStandardRoute(
72
            $collection,
73
            "frontend.standard",
74
            StandardRoute::class,
75
            "/");
76
77
        $request = Request::create($uri);
78
        $matches = $router->matchRequest($request);
79
80
        self::assertArrayHasKey('_route', $matches);
81
82
        foreach ($params as $param=>$value) {
83
            self::assertArrayHasKey($param, $matches);
84
            self::assertSame($matches[$param], $value);
85
        }
86
    }
87
88
    /**
89
     * @return array
90
     */
91
    public function dataRouteDynamic()
92
    {
93
        return [
94
            ['/api/pages', 'api.standard', ['module' => 'api', 'controller' => 'pages', 'action' => 'index']],
95
            ['/api/pages/', 'api.standard', ['module' => 'api', 'controller' => 'pages', 'action' => 'index']],
96
            ['/api/pages/delete', 'api.standard', ['module' => 'api', 'controller' => 'pages', 'action' => 'delete']],
97
            ['/admin/pages/delete', 'admin.standard', ['module' => 'admin', 'controller' => 'pages', 'action' => 'delete']],
98
            ['/users/delete', 'frontend.standard', ['controller' => 'users', 'action' => 'delete']],
99
            ['/users/', 'frontend.standard', ['controller' => 'users', 'action' => 'index']],
100
            ['/users', 'frontend.standard', ['controller' => 'users', 'action' => 'index']],
101
        ];
102
    }
103
}
104