mirror of
https://github.com/dannyvankooten/AltoRouter.git
synced 2025-08-07 17:07:00 +02:00
add @covers on every test, remove array long syntax
This commit is contained in:
@@ -2,42 +2,49 @@
|
|||||||
|
|
||||||
require 'AltoRouter.php';
|
require 'AltoRouter.php';
|
||||||
|
|
||||||
class AltoRouterDebug extends AltoRouter{
|
class AltoRouterDebug extends AltoRouter
|
||||||
public function getNamedRoutes(){
|
{
|
||||||
|
public function getNamedRoutes()
|
||||||
|
{
|
||||||
return $this->namedRoutes;
|
return $this->namedRoutes;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getBasePath(){
|
public function getBasePath()
|
||||||
|
{
|
||||||
return $this->basePath;
|
return $this->basePath;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class SimpleTraversable implements Iterator{
|
class SimpleTraversable implements Iterator
|
||||||
|
{
|
||||||
|
|
||||||
protected $_position = 0;
|
protected $_position = 0;
|
||||||
|
|
||||||
protected $_data = array(
|
protected $_data = [
|
||||||
array('GET', '/foo', 'foo_action', null),
|
['GET', '/foo', 'foo_action', null],
|
||||||
array('POST', '/bar', 'bar_action', 'second_route')
|
['POST', '/bar', 'bar_action', 'second_route']
|
||||||
);
|
];
|
||||||
|
|
||||||
public function current(){
|
public function current()
|
||||||
|
{
|
||||||
return $this->_data[$this->_position];
|
return $this->_data[$this->_position];
|
||||||
}
|
}
|
||||||
public function key(){
|
public function key()
|
||||||
|
{
|
||||||
return $this->_position;
|
return $this->_position;
|
||||||
}
|
}
|
||||||
public function next(){
|
public function next()
|
||||||
|
{
|
||||||
++$this->_position;
|
++$this->_position;
|
||||||
}
|
}
|
||||||
public function rewind(){
|
public function rewind()
|
||||||
|
{
|
||||||
$this->_position = 0;
|
$this->_position = 0;
|
||||||
}
|
}
|
||||||
public function valid(){
|
public function valid()
|
||||||
|
{
|
||||||
return isset($this->_data[$this->_position]);
|
return isset($this->_data[$this->_position]);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class AltoRouterTest extends PHPUnit\Framework\TestCase
|
class AltoRouterTest extends PHPUnit\Framework\TestCase
|
||||||
@@ -71,12 +78,13 @@ class AltoRouterTest extends PHPUnit\Framework\TestCase
|
|||||||
{
|
{
|
||||||
$method = 'POST';
|
$method = 'POST';
|
||||||
$route = '/[:controller]/[:action]';
|
$route = '/[:controller]/[:action]';
|
||||||
$target = function(){};
|
$target = static function () {
|
||||||
|
};
|
||||||
|
|
||||||
$this->assertInternalType('array', $this->router->getRoutes());
|
$this->assertInternalType('array', $this->router->getRoutes());
|
||||||
// $this->assertIsArray($this->router->getRoutes()); // for phpunit 7.x
|
// $this->assertIsArray($this->router->getRoutes()); // for phpunit 7.x
|
||||||
$this->router->map($method, $route, $target);
|
$this->router->map($method, $route, $target);
|
||||||
$this->assertEquals(array(array($method, $route, $target, null)), $this->router->getRoutes());
|
$this->assertEquals([[$method, $route, $target, null]], $this->router->getRoutes());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -86,17 +94,18 @@ class AltoRouterTest extends PHPUnit\Framework\TestCase
|
|||||||
{
|
{
|
||||||
$method = 'POST';
|
$method = 'POST';
|
||||||
$route = '/[:controller]/[:action]';
|
$route = '/[:controller]/[:action]';
|
||||||
$target = function(){};
|
$target = static function () {
|
||||||
|
};
|
||||||
|
|
||||||
$this->router->addRoutes(array(
|
$this->router->addRoutes([
|
||||||
array($method, $route, $target),
|
[$method, $route, $target],
|
||||||
array($method, $route, $target, 'second_route')
|
[$method, $route, $target, 'second_route']
|
||||||
));
|
]);
|
||||||
|
|
||||||
$routes = $this->router->getRoutes();
|
$routes = $this->router->getRoutes();
|
||||||
|
|
||||||
$this->assertEquals(array($method, $route, $target, null), $routes[0]);
|
$this->assertEquals([$method, $route, $target, null], $routes[0]);
|
||||||
$this->assertEquals(array($method, $route, $target, 'second_route'), $routes[1]);
|
$this->assertEquals([$method, $route, $target, 'second_route'], $routes[1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -147,13 +156,14 @@ class AltoRouterTest extends PHPUnit\Framework\TestCase
|
|||||||
{
|
{
|
||||||
$method = 'POST';
|
$method = 'POST';
|
||||||
$route = '/[:controller]/[:action]';
|
$route = '/[:controller]/[:action]';
|
||||||
$target = function(){};
|
$target = static function () {
|
||||||
|
};
|
||||||
|
|
||||||
$this->router->map($method, $route, $target);
|
$this->router->map($method, $route, $target);
|
||||||
|
|
||||||
$routes = $this->router->getRoutes();
|
$routes = $this->router->getRoutes();
|
||||||
|
|
||||||
$this->assertEquals(array($method, $route, $target, null), $routes[0]);
|
$this->assertEquals([$method, $route, $target, null], $routes[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -163,21 +173,22 @@ class AltoRouterTest extends PHPUnit\Framework\TestCase
|
|||||||
{
|
{
|
||||||
$method = 'POST';
|
$method = 'POST';
|
||||||
$route = '/[:controller]/[:action]';
|
$route = '/[:controller]/[:action]';
|
||||||
$target = function(){};
|
$target = static function () {
|
||||||
|
};
|
||||||
$name = 'myroute';
|
$name = 'myroute';
|
||||||
|
|
||||||
$this->router->map($method, $route, $target, $name);
|
$this->router->map($method, $route, $target, $name);
|
||||||
|
|
||||||
$routes = $this->router->getRoutes();
|
$routes = $this->router->getRoutes();
|
||||||
$this->assertEquals(array($method, $route, $target, $name), $routes[0]);
|
$this->assertEquals([$method, $route, $target, $name], $routes[0]);
|
||||||
|
|
||||||
$named_routes = $this->router->getNamedRoutes();
|
$named_routes = $this->router->getNamedRoutes();
|
||||||
$this->assertEquals($route, $named_routes[$name]);
|
$this->assertEquals($route, $named_routes[$name]);
|
||||||
|
|
||||||
try{
|
try {
|
||||||
$this->router->map($method, $route, $target, $name);
|
$this->router->map($method, $route, $target, $name);
|
||||||
$this->fail('Should not be able to add existing named route');
|
$this->fail('Should not be able to add existing named route');
|
||||||
}catch(Exception $e){
|
} catch (Exception $e) {
|
||||||
$this->assertEquals("Can not redeclare route '{$name}'", $e->getMessage());
|
$this->assertEquals("Can not redeclare route '{$name}'", $e->getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -188,75 +199,96 @@ class AltoRouterTest extends PHPUnit\Framework\TestCase
|
|||||||
*/
|
*/
|
||||||
public function testGenerate()
|
public function testGenerate()
|
||||||
{
|
{
|
||||||
$params = array(
|
$params =[
|
||||||
'controller' => 'test',
|
'controller' => 'test',
|
||||||
'action' => 'someaction'
|
'action' => 'someaction'
|
||||||
|
];
|
||||||
|
|
||||||
|
$this->router->map('GET', '/[:controller]/[:action]', static function () {
|
||||||
|
}, 'foo_route');
|
||||||
|
|
||||||
|
$this->assertEquals(
|
||||||
|
'/test/someaction',
|
||||||
|
$this->router->generate('foo_route', $params)
|
||||||
);
|
);
|
||||||
|
|
||||||
$this->router->map('GET', '/[:controller]/[:action]', function(){}, 'foo_route');
|
$params = [
|
||||||
|
|
||||||
$this->assertEquals('/test/someaction',
|
|
||||||
$this->router->generate('foo_route', $params));
|
|
||||||
|
|
||||||
$params = array(
|
|
||||||
'controller' => 'test',
|
'controller' => 'test',
|
||||||
'action' => 'someaction',
|
'action' => 'someaction',
|
||||||
'type' => 'json'
|
'type' => 'json'
|
||||||
|
];
|
||||||
|
|
||||||
|
$this->assertEquals(
|
||||||
|
'/test/someaction',
|
||||||
|
$this->router->generate('foo_route', $params)
|
||||||
);
|
);
|
||||||
|
|
||||||
$this->assertEquals('/test/someaction',
|
|
||||||
$this->router->generate('foo_route', $params));
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @covers AltoRouter::generate
|
||||||
|
*/
|
||||||
public function testGenerateWithOptionalUrlParts()
|
public function testGenerateWithOptionalUrlParts()
|
||||||
{
|
{
|
||||||
$this->router->map('GET', '/[:controller]/[:action].[:type]?', function(){}, 'bar_route');
|
$this->router->map('GET', '/[:controller]/[:action].[:type]?', static function () {
|
||||||
|
}, 'bar_route');
|
||||||
|
|
||||||
$params = array(
|
$params = [
|
||||||
'controller' => 'test',
|
'controller' => 'test',
|
||||||
'action' => 'someaction'
|
'action' => 'someaction'
|
||||||
|
];
|
||||||
|
|
||||||
|
$this->assertEquals(
|
||||||
|
'/test/someaction',
|
||||||
|
$this->router->generate('bar_route', $params)
|
||||||
);
|
);
|
||||||
|
|
||||||
$this->assertEquals('/test/someaction',
|
$params = [
|
||||||
$this->router->generate('bar_route', $params));
|
|
||||||
|
|
||||||
$params = array(
|
|
||||||
'controller' => 'test',
|
'controller' => 'test',
|
||||||
'action' => 'someaction',
|
'action' => 'someaction',
|
||||||
'type' => 'json'
|
'type' => 'json'
|
||||||
);
|
];
|
||||||
|
|
||||||
$this->assertEquals('/test/someaction.json',
|
$this->assertEquals(
|
||||||
$this->router->generate('bar_route', $params));
|
'/test/someaction.json',
|
||||||
|
$this->router->generate('bar_route', $params)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* GitHub #98
|
* GitHub #98
|
||||||
|
* @covers AltoRouter::generate
|
||||||
*/
|
*/
|
||||||
public function testGenerateWithOptionalPartOnBareUrl()
|
public function testGenerateWithOptionalPartOnBareUrl()
|
||||||
{
|
{
|
||||||
$this->router->map('GET', '/[i:page]?', function(){}, 'bare_route');
|
$this->router->map('GET', '/[i:page]?', static function () {
|
||||||
|
}, 'bare_route');
|
||||||
|
|
||||||
$params = array(
|
$params = [
|
||||||
'page' => 1
|
'page' => 1
|
||||||
|
];
|
||||||
|
|
||||||
|
$this->assertEquals(
|
||||||
|
'/1',
|
||||||
|
$this->router->generate('bare_route', $params)
|
||||||
);
|
);
|
||||||
|
|
||||||
$this->assertEquals('/1',
|
$params = [];
|
||||||
$this->router->generate('bare_route', $params));
|
|
||||||
|
|
||||||
$params = array();
|
$this->assertEquals(
|
||||||
|
'/',
|
||||||
$this->assertEquals('/',
|
$this->router->generate('bare_route', $params)
|
||||||
$this->router->generate('bare_route', $params));
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @covers AltoRouter::generate
|
||||||
|
*/
|
||||||
public function testGenerateWithNonexistingRoute()
|
public function testGenerateWithNonexistingRoute()
|
||||||
{
|
{
|
||||||
try{
|
try {
|
||||||
$this->router->generate('nonexisting_route');
|
$this->router->generate('nonexisting_route');
|
||||||
$this->fail('Should trigger an exception on nonexisting named route');
|
$this->fail('Should trigger an exception on nonexisting named route');
|
||||||
}catch(Exception $e){
|
} catch (Exception $e) {
|
||||||
$this->assertEquals("Route 'nonexisting_route' does not exist.", $e->getMessage());
|
$this->assertEquals("Route 'nonexisting_route' does not exist.", $e->getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -269,64 +301,73 @@ class AltoRouterTest extends PHPUnit\Framework\TestCase
|
|||||||
{
|
{
|
||||||
$this->router->map('GET', '/foo/[:controller]/[:action]', 'foo_action', 'foo_route');
|
$this->router->map('GET', '/foo/[:controller]/[:action]', 'foo_action', 'foo_route');
|
||||||
|
|
||||||
$this->assertEquals(array(
|
$this->assertEquals([
|
||||||
'target' => 'foo_action',
|
'target' => 'foo_action',
|
||||||
'params' => array(
|
'params' => [
|
||||||
'controller' => 'test',
|
'controller' => 'test',
|
||||||
'action' => 'do'
|
'action' => 'do'
|
||||||
),
|
],
|
||||||
'name' => 'foo_route'
|
'name' => 'foo_route'
|
||||||
), $this->router->match('/foo/test/do', 'GET'));
|
], $this->router->match('/foo/test/do', 'GET'));
|
||||||
|
|
||||||
$this->assertFalse($this->router->match('/foo/test/do', 'POST'));
|
$this->assertFalse($this->router->match('/foo/test/do', 'POST'));
|
||||||
|
|
||||||
$this->assertEquals(array(
|
$this->assertEquals([
|
||||||
'target' => 'foo_action',
|
'target' => 'foo_action',
|
||||||
'params' => array(
|
'params' => [
|
||||||
'controller' => 'test',
|
'controller' => 'test',
|
||||||
'action' => 'do'
|
'action' => 'do'
|
||||||
),
|
],
|
||||||
'name' => 'foo_route'
|
'name' => 'foo_route'
|
||||||
), $this->router->match('/foo/test/do?param=value', 'GET'));
|
], $this->router->match('/foo/test/do?param=value', 'GET'));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testMatchWithNonRegex() {
|
/**
|
||||||
$this->router->map('GET','/about-us', 'PagesController#about', 'about_us');
|
* @covers AltoRouter::match
|
||||||
|
*/
|
||||||
|
public function testMatchWithNonRegex()
|
||||||
|
{
|
||||||
|
$this->router->map('GET', '/about-us', 'PagesController#about', 'about_us');
|
||||||
|
|
||||||
$this->assertEquals(array(
|
$this->assertEquals([
|
||||||
'target' => 'PagesController#about',
|
'target' => 'PagesController#about',
|
||||||
'params' => array(),
|
'params' => [],
|
||||||
'name' => 'about_us'
|
'name' => 'about_us'
|
||||||
), $this->router->match('/about-us', 'GET'));
|
], $this->router->match('/about-us', 'GET'));
|
||||||
|
|
||||||
$this->assertFalse($this->router->match('/about-us', 'POST'));
|
$this->assertFalse($this->router->match('/about-us', 'POST'));
|
||||||
$this->assertFalse($this->router->match('/about', 'GET'));
|
$this->assertFalse($this->router->match('/about', 'GET'));
|
||||||
$this->assertFalse($this->router->match('/about-us-again', 'GET'));
|
$this->assertFalse($this->router->match('/about-us-again', 'GET'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @covers AltoRouter::match
|
||||||
|
*/
|
||||||
public function testMatchWithFixedParamValues()
|
public function testMatchWithFixedParamValues()
|
||||||
{
|
{
|
||||||
$this->router->map('POST','/users/[i:id]/[delete|update:action]', 'usersController#doAction', 'users_do');
|
$this->router->map('POST', '/users/[i:id]/[delete|update:action]', 'usersController#doAction', 'users_do');
|
||||||
|
|
||||||
$this->assertEquals(array(
|
$this->assertEquals([
|
||||||
'target' => 'usersController#doAction',
|
'target' => 'usersController#doAction',
|
||||||
'params' => array(
|
'params' => [
|
||||||
'id' => 1,
|
'id' => 1,
|
||||||
'action' => 'delete'
|
'action' => 'delete'
|
||||||
),
|
],
|
||||||
'name' => 'users_do'
|
'name' => 'users_do'
|
||||||
), $this->router->match('/users/1/delete', 'POST'));
|
], $this->router->match('/users/1/delete', 'POST'));
|
||||||
|
|
||||||
$this->assertFalse($this->router->match('/users/1/delete', 'GET'));
|
$this->assertFalse($this->router->match('/users/1/delete', 'GET'));
|
||||||
$this->assertFalse($this->router->match('/users/abc/delete', 'POST'));
|
$this->assertFalse($this->router->match('/users/abc/delete', 'POST'));
|
||||||
$this->assertFalse($this->router->match('/users/1/create', 'GET'));
|
$this->assertFalse($this->router->match('/users/1/create', 'GET'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @covers AltoRouter::match
|
||||||
|
*/
|
||||||
public function testMatchWithPlainRoute()
|
public function testMatchWithPlainRoute()
|
||||||
{
|
{
|
||||||
$router = $this->getMockBuilder('AltoRouterDebug')
|
$router = $this->getMockBuilder('AltoRouterDebug')
|
||||||
->setMethods(array('compileRoute'))
|
->setMethods(['compileRoute'])
|
||||||
->getMock();
|
->getMock();
|
||||||
|
|
||||||
// this should prove that compileRoute is not called when the route doesn't
|
// this should prove that compileRoute is not called when the route doesn't
|
||||||
@@ -337,19 +378,21 @@ class AltoRouterTest extends PHPUnit\Framework\TestCase
|
|||||||
$router->map('GET', '/contact', 'website#contact', 'contact');
|
$router->map('GET', '/contact', 'website#contact', 'contact');
|
||||||
|
|
||||||
// exact match, so no regex compilation necessary
|
// exact match, so no regex compilation necessary
|
||||||
$this->assertEquals(array(
|
$this->assertEquals([
|
||||||
'target' => 'website#contact',
|
'target' => 'website#contact',
|
||||||
'params' => array(),
|
'params' => [],
|
||||||
'name' => 'contact'
|
'name' => 'contact'
|
||||||
), $router->match('/contact', 'GET'));
|
], $router->match('/contact', 'GET'));
|
||||||
|
|
||||||
$router->map('GET', '/page/[:id]', 'pages#show', 'page');
|
$router->map('GET', '/page/[:id]', 'pages#show', 'page');
|
||||||
|
|
||||||
// no prefix match, so no regex compilation necessary
|
// no prefix match, so no regex compilation necessary
|
||||||
$this->assertFalse($router->match('/page1', 'GET'));
|
$this->assertFalse($router->match('/page1', 'GET'));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @covers AltoRouter::match
|
||||||
|
*/
|
||||||
public function testMatchWithServerVars()
|
public function testMatchWithServerVars()
|
||||||
{
|
{
|
||||||
$this->router->map('GET', '/foo/[:controller]/[:action]', 'foo_action', 'foo_route');
|
$this->router->map('GET', '/foo/[:controller]/[:action]', 'foo_action', 'foo_route');
|
||||||
@@ -357,88 +400,98 @@ class AltoRouterTest extends PHPUnit\Framework\TestCase
|
|||||||
$_SERVER['REQUEST_URI'] = '/foo/test/do';
|
$_SERVER['REQUEST_URI'] = '/foo/test/do';
|
||||||
$_SERVER['REQUEST_METHOD'] = 'GET';
|
$_SERVER['REQUEST_METHOD'] = 'GET';
|
||||||
|
|
||||||
$this->assertEquals(array(
|
$this->assertEquals([
|
||||||
'target' => 'foo_action',
|
'target' => 'foo_action',
|
||||||
'params' => array(
|
'params' => [
|
||||||
'controller' => 'test',
|
'controller' => 'test',
|
||||||
'action' => 'do'
|
'action' => 'do'
|
||||||
),
|
],
|
||||||
'name' => 'foo_route'
|
'name' => 'foo_route'
|
||||||
), $this->router->match());
|
], $this->router->match());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @covers AltoRouter::match
|
||||||
|
*/
|
||||||
public function testMatchWithOptionalUrlParts()
|
public function testMatchWithOptionalUrlParts()
|
||||||
{
|
{
|
||||||
$this->router->map('GET', '/bar/[:controller]/[:action].[:type]?', 'bar_action', 'bar_route');
|
$this->router->map('GET', '/bar/[:controller]/[:action].[:type]?', 'bar_action', 'bar_route');
|
||||||
|
|
||||||
$this->assertEquals(array(
|
$this->assertEquals([
|
||||||
'target' => 'bar_action',
|
'target' => 'bar_action',
|
||||||
'params' => array(
|
'params' => [
|
||||||
'controller' => 'test',
|
'controller' => 'test',
|
||||||
'action' => 'do',
|
'action' => 'do',
|
||||||
'type' => 'json'
|
'type' => 'json'
|
||||||
),
|
],
|
||||||
'name' => 'bar_route'
|
'name' => 'bar_route'
|
||||||
), $this->router->match('/bar/test/do.json', 'GET'));
|
], $this->router->match('/bar/test/do.json', 'GET'));
|
||||||
|
|
||||||
$this->assertEquals(array(
|
$this->assertEquals([
|
||||||
'target' => 'bar_action',
|
'target' => 'bar_action',
|
||||||
'params' => array(
|
'params' => [
|
||||||
'controller' => 'test',
|
'controller' => 'test',
|
||||||
'action' => 'do'
|
'action' => 'do'
|
||||||
),
|
],
|
||||||
'name' => 'bar_route'
|
'name' => 'bar_route'
|
||||||
), $this->router->match('/bar/test/do', 'GET'));
|
], $this->router->match('/bar/test/do', 'GET'));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* GitHub #98
|
* GitHub #98
|
||||||
|
* @covers AltoRouter::match
|
||||||
*/
|
*/
|
||||||
public function testMatchWithOptionalPartOnBareUrl(){
|
public function testMatchWithOptionalPartOnBareUrl()
|
||||||
|
{
|
||||||
$this->router->map('GET', '/[i:page]?', 'bare_action', 'bare_route');
|
$this->router->map('GET', '/[i:page]?', 'bare_action', 'bare_route');
|
||||||
|
|
||||||
$this->assertEquals(array(
|
$this->assertEquals([
|
||||||
'target' => 'bare_action',
|
'target' => 'bare_action',
|
||||||
'params' => array(
|
'params' => [
|
||||||
'page' => 1
|
'page' => 1
|
||||||
),
|
],
|
||||||
'name' => 'bare_route'
|
'name' => 'bare_route'
|
||||||
), $this->router->match('/1', 'GET'));
|
], $this->router->match('/1', 'GET'));
|
||||||
|
|
||||||
$this->assertEquals(array(
|
$this->assertEquals([
|
||||||
'target' => 'bare_action',
|
'target' => 'bare_action',
|
||||||
'params' => array(),
|
'params' => [],
|
||||||
'name' => 'bare_route'
|
'name' => 'bare_route'
|
||||||
), $this->router->match('/', 'GET'));
|
], $this->router->match('/', 'GET'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @covers AltoRouter::match
|
||||||
|
*/
|
||||||
public function testMatchWithWildcard()
|
public function testMatchWithWildcard()
|
||||||
{
|
{
|
||||||
$this->router->map('GET', '/a', 'foo_action', 'foo_route');
|
$this->router->map('GET', '/a', 'foo_action', 'foo_route');
|
||||||
$this->router->map('GET', '*', 'bar_action', 'bar_route');
|
$this->router->map('GET', '*', 'bar_action', 'bar_route');
|
||||||
|
|
||||||
$this->assertEquals(array(
|
$this->assertEquals([
|
||||||
'target' => 'bar_action',
|
'target' => 'bar_action',
|
||||||
'params' => array(),
|
'params' => [],
|
||||||
'name' => 'bar_route'
|
'name' => 'bar_route'
|
||||||
), $this->router->match('/everything', 'GET'));
|
], $this->router->match('/everything', 'GET'));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* @covers AltoRouter::match
|
||||||
|
*/
|
||||||
public function testMatchWithCustomRegexp()
|
public function testMatchWithCustomRegexp()
|
||||||
{
|
{
|
||||||
$this->router->map('GET', '@^/[a-z]*$', 'bar_action', 'bar_route');
|
$this->router->map('GET', '@^/[a-z]*$', 'bar_action', 'bar_route');
|
||||||
|
|
||||||
$this->assertEquals(array(
|
$this->assertEquals([
|
||||||
'target' => 'bar_action',
|
'target' => 'bar_action',
|
||||||
'params' => array(),
|
'params' => [],
|
||||||
'name' => 'bar_route'
|
'name' => 'bar_route'
|
||||||
), $this->router->match('/everything', 'GET'));
|
], $this->router->match('/everything', 'GET'));
|
||||||
|
|
||||||
$this->assertFalse($this->router->match('/some-other-thing', 'GET'));
|
$this->assertFalse($this->router->match('/some-other-thing', 'GET'));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* @covers AltoRouter::match
|
||||||
|
*/
|
||||||
public function testMatchWithUnicodeRegex()
|
public function testMatchWithUnicodeRegex()
|
||||||
{
|
{
|
||||||
$pattern = '/(?<path>[^';
|
$pattern = '/(?<path>[^';
|
||||||
@@ -455,13 +508,13 @@ class AltoRouterTest extends PHPUnit\Framework\TestCase
|
|||||||
|
|
||||||
$this->router->map('GET', '@' . $pattern, 'unicode_action', 'unicode_route');
|
$this->router->map('GET', '@' . $pattern, 'unicode_action', 'unicode_route');
|
||||||
|
|
||||||
$this->assertEquals(array(
|
$this->assertEquals([
|
||||||
'target' => 'unicode_action',
|
'target' => 'unicode_action',
|
||||||
'name' => 'unicode_route',
|
'name' => 'unicode_route',
|
||||||
'params' => array(
|
'params' => [
|
||||||
'path' => '大家好'
|
'path' => '大家好'
|
||||||
)
|
]
|
||||||
), $this->router->match('/大家好', 'GET'));
|
], $this->router->match('/大家好', 'GET'));
|
||||||
|
|
||||||
$this->assertFalse($this->router->match('/﷽', 'GET'));
|
$this->assertFalse($this->router->match('/﷽', 'GET'));
|
||||||
}
|
}
|
||||||
@@ -471,29 +524,30 @@ class AltoRouterTest extends PHPUnit\Framework\TestCase
|
|||||||
*/
|
*/
|
||||||
public function testMatchWithCustomNamedRegex()
|
public function testMatchWithCustomNamedRegex()
|
||||||
{
|
{
|
||||||
$this->router->addMatchTypes(array('cId' => '[a-zA-Z]{2}[0-9](?:_[0-9]++)?'));
|
$this->router->addMatchTypes(['cId' => '[a-zA-Z]{2}[0-9](?:_[0-9]++)?']);
|
||||||
$this->router->map('GET', '/bar/[cId:customId]', 'bar_action', 'bar_route');
|
$this->router->map('GET', '/bar/[cId:customId]', 'bar_action', 'bar_route');
|
||||||
|
|
||||||
$this->assertEquals(array(
|
$this->assertEquals([
|
||||||
'target' => 'bar_action',
|
'target' => 'bar_action',
|
||||||
'params' => array(
|
'params' => [
|
||||||
'customId' => 'AB1',
|
'customId' => 'AB1',
|
||||||
),
|
],
|
||||||
'name' => 'bar_route'
|
'name' => 'bar_route'
|
||||||
), $this->router->match('/bar/AB1', 'GET'));
|
], $this->router->match('/bar/AB1', 'GET'));
|
||||||
|
|
||||||
$this->assertEquals(array(
|
$this->assertEquals([
|
||||||
'target' => 'bar_action',
|
'target' => 'bar_action',
|
||||||
'params' => array(
|
'params' => [
|
||||||
'customId' => 'AB1_0123456789',
|
'customId' => 'AB1_0123456789',
|
||||||
),
|
],
|
||||||
'name' => 'bar_route'
|
'name' => 'bar_route'
|
||||||
), $this->router->match('/bar/AB1_0123456789', 'GET'));
|
], $this->router->match('/bar/AB1_0123456789', 'GET'));
|
||||||
|
|
||||||
$this->assertFalse($this->router->match('/some-other-thing', 'GET'));
|
$this->assertFalse($this->router->match('/some-other-thing', 'GET'));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* @covers AltoRouter::addMatchTypes
|
||||||
|
*/
|
||||||
public function testMatchWithCustomNamedUnicodeRegex()
|
public function testMatchWithCustomNamedUnicodeRegex()
|
||||||
{
|
{
|
||||||
$pattern = '[^';
|
$pattern = '[^';
|
||||||
@@ -504,16 +558,16 @@ class AltoRouterTest extends PHPUnit\Framework\TestCase
|
|||||||
$pattern .= '\x{0750}-\x{077F}';
|
$pattern .= '\x{0750}-\x{077F}';
|
||||||
$pattern .= ']+';
|
$pattern .= ']+';
|
||||||
|
|
||||||
$this->router->addMatchTypes(array('nonArabic' => $pattern));
|
$this->router->addMatchTypes(['nonArabic' => $pattern]);
|
||||||
$this->router->map('GET', '/bar/[nonArabic:string]', 'non_arabic_action', 'non_arabic_route');
|
$this->router->map('GET', '/bar/[nonArabic:string]', 'non_arabic_action', 'non_arabic_route');
|
||||||
|
|
||||||
$this->assertEquals(array(
|
$this->assertEquals([
|
||||||
'target' => 'non_arabic_action',
|
'target' => 'non_arabic_action',
|
||||||
'name' => 'non_arabic_route',
|
'name' => 'non_arabic_route',
|
||||||
'params' => array(
|
'params' => [
|
||||||
'string' => 'some-path'
|
'string' => 'some-path'
|
||||||
)
|
]
|
||||||
), $this->router->match('/bar/some-path', 'GET'));
|
], $this->router->match('/bar/some-path', 'GET'));
|
||||||
|
|
||||||
$this->assertFalse($this->router->match('/﷽', 'GET'));
|
$this->assertFalse($this->router->match('/﷽', 'GET'));
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user