109 lines
3.3 KiB
PHP
109 lines
3.3 KiB
PHP
|
<?php
|
||
|
|
||
|
namespace FastRoute;
|
||
|
|
||
|
use PHPUnit\Framework\TestCase;
|
||
|
|
||
|
class RouteCollectorTest extends TestCase
|
||
|
{
|
||
|
public function testShortcuts()
|
||
|
{
|
||
|
$r = new DummyRouteCollector();
|
||
|
|
||
|
$r->delete('/delete', 'delete');
|
||
|
$r->get('/get', 'get');
|
||
|
$r->head('/head', 'head');
|
||
|
$r->patch('/patch', 'patch');
|
||
|
$r->post('/post', 'post');
|
||
|
$r->put('/put', 'put');
|
||
|
|
||
|
$expected = [
|
||
|
['DELETE', '/delete', 'delete'],
|
||
|
['GET', '/get', 'get'],
|
||
|
['HEAD', '/head', 'head'],
|
||
|
['PATCH', '/patch', 'patch'],
|
||
|
['POST', '/post', 'post'],
|
||
|
['PUT', '/put', 'put'],
|
||
|
];
|
||
|
|
||
|
$this->assertSame($expected, $r->routes);
|
||
|
}
|
||
|
|
||
|
public function testGroups()
|
||
|
{
|
||
|
$r = new DummyRouteCollector();
|
||
|
|
||
|
$r->delete('/delete', 'delete');
|
||
|
$r->get('/get', 'get');
|
||
|
$r->head('/head', 'head');
|
||
|
$r->patch('/patch', 'patch');
|
||
|
$r->post('/post', 'post');
|
||
|
$r->put('/put', 'put');
|
||
|
|
||
|
$r->addGroup('/group-one', function (DummyRouteCollector $r) {
|
||
|
$r->delete('/delete', 'delete');
|
||
|
$r->get('/get', 'get');
|
||
|
$r->head('/head', 'head');
|
||
|
$r->patch('/patch', 'patch');
|
||
|
$r->post('/post', 'post');
|
||
|
$r->put('/put', 'put');
|
||
|
|
||
|
$r->addGroup('/group-two', function (DummyRouteCollector $r) {
|
||
|
$r->delete('/delete', 'delete');
|
||
|
$r->get('/get', 'get');
|
||
|
$r->head('/head', 'head');
|
||
|
$r->patch('/patch', 'patch');
|
||
|
$r->post('/post', 'post');
|
||
|
$r->put('/put', 'put');
|
||
|
});
|
||
|
});
|
||
|
|
||
|
$r->addGroup('/admin', function (DummyRouteCollector $r) {
|
||
|
$r->get('-some-info', 'admin-some-info');
|
||
|
});
|
||
|
$r->addGroup('/admin-', function (DummyRouteCollector $r) {
|
||
|
$r->get('more-info', 'admin-more-info');
|
||
|
});
|
||
|
|
||
|
$expected = [
|
||
|
['DELETE', '/delete', 'delete'],
|
||
|
['GET', '/get', 'get'],
|
||
|
['HEAD', '/head', 'head'],
|
||
|
['PATCH', '/patch', 'patch'],
|
||
|
['POST', '/post', 'post'],
|
||
|
['PUT', '/put', 'put'],
|
||
|
['DELETE', '/group-one/delete', 'delete'],
|
||
|
['GET', '/group-one/get', 'get'],
|
||
|
['HEAD', '/group-one/head', 'head'],
|
||
|
['PATCH', '/group-one/patch', 'patch'],
|
||
|
['POST', '/group-one/post', 'post'],
|
||
|
['PUT', '/group-one/put', 'put'],
|
||
|
['DELETE', '/group-one/group-two/delete', 'delete'],
|
||
|
['GET', '/group-one/group-two/get', 'get'],
|
||
|
['HEAD', '/group-one/group-two/head', 'head'],
|
||
|
['PATCH', '/group-one/group-two/patch', 'patch'],
|
||
|
['POST', '/group-one/group-two/post', 'post'],
|
||
|
['PUT', '/group-one/group-two/put', 'put'],
|
||
|
['GET', '/admin-some-info', 'admin-some-info'],
|
||
|
['GET', '/admin-more-info', 'admin-more-info'],
|
||
|
];
|
||
|
|
||
|
$this->assertSame($expected, $r->routes);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
class DummyRouteCollector extends RouteCollector
|
||
|
{
|
||
|
public $routes = [];
|
||
|
|
||
|
public function __construct()
|
||
|
{
|
||
|
}
|
||
|
|
||
|
public function addRoute($method, $route, $handler)
|
||
|
{
|
||
|
$route = $this->currentGroupPrefix . $route;
|
||
|
$this->routes[] = [$method, $route, $handler];
|
||
|
}
|
||
|
}
|