implemented Router::reverseToArray()

This commit is contained in:
Val Bancer 2017-01-26 21:52:26 +01:00
parent 8ee5259323
commit ebde8fdfb5
2 changed files with 94 additions and 24 deletions
lib/Cake/Test/Case/Routing

View file

@ -2464,9 +2464,8 @@ class RouterTest extends CakeTestCase {
*
* @return void
*/
public function testRouterReverse() {
public function testReverseToken() {
Router::$initialized = true;
$params = array(
'controller' => 'posts',
'action' => 'view',
@ -2481,17 +2480,21 @@ class RouterTest extends CakeTestCase {
);
$result = Router::reverse($params);
$this->assertEquals('/posts/view/1', $result);
}
public function testReverseNamed() {
$params = array(
'controller' => 'posts',
'action' => 'index',
'pass' => array(1),
'named' => array('page' => 1, 'sort' => 'Article.title', 'direction' => 'desc'),
'url' => array()
'url' => array(),
);
$result = Router::reverse($params);
$this->assertEquals('/posts/index/1/page:1/sort:Article.title/direction:desc', $result);
}
public function testReverseLocalized() {
Router::connect('/:lang/:controller/:action/*', array(), array('lang' => '[a-z]{3}'));
$params = array(
'lang' => 'eng',
@ -2499,11 +2502,14 @@ class RouterTest extends CakeTestCase {
'action' => 'view',
'pass' => array(1),
'named' => array(),
'url' => array('url' => 'eng/posts/view/1')
'url' => array('url' => 'eng/posts/view/1'),
);
$result = Router::reverse($params);
$this->assertEquals('/eng/posts/view/1', $result);
}
public function testReverseArrayQuery() {
Router::connect('/:lang/:controller/:action/*', array(), array('lang' => '[a-z]{3}'));
$params = array(
'lang' => 'eng',
'controller' => 'posts',
@ -2512,11 +2518,14 @@ class RouterTest extends CakeTestCase {
'named' => array(),
'url' => array('url' => 'eng/posts/view/1', 'foo' => 'bar', 'baz' => 'quu'),
'paging' => array(),
'models' => array()
'models' => array(),
);
$result = Router::reverse($params);
$this->assertEquals('/eng/posts/view/1?foo=bar&baz=quu', $result);
}
public function testReverseCakeRequestQuery() {
Router::connect('/:lang/:controller/:action/*', array(), array('lang' => '[a-z]{3}'));
$request = new CakeRequest('/eng/posts/view/1');
$request->addParams(array(
'lang' => 'eng',
@ -2529,19 +2538,63 @@ class RouterTest extends CakeTestCase {
$result = Router::reverse($request);
$expected = '/eng/posts/view/1?test=value';
$this->assertEquals($expected, $result);
}
public function testReverseFull() {
Router::connect('/:lang/:controller/:action/*', array(), array('lang' => '[a-z]{3}'));
$params = array(
'lang' => 'eng',
'controller' => 'posts',
'action' => 'view',
'pass' => array(1),
'named' => array(),
'url' => array('url' => 'eng/posts/view/1')
'url' => array('url' => 'eng/posts/view/1'),
);
$result = Router::reverse($params, true);
$this->assertRegExp('/^http(s)?:\/\//', $result);
}
public function testReverseToArrayNamed() {
$params = array(
'controller' => 'posts',
'action' => 'index',
'pass' => array(123),
'named' => array('page' => 123, 'sort' => 'Article.title', 'direction' => 'desc'),
'url' => array(),
);
$result = Router::reverse($params);
$expected = array(
'controller' => 'posts',
'action' => 'index',
123,
'page' => 123,
'sort' => 'Article.title',
'direction' => 'desc',
);
$this->assertEquals($expected, $result);
}
public function testReverseToArrayCakeRequestQuery() {
$request = new CakeRequest('/posts/view/123');
$request->addParams(array(
'controller' => 'posts',
'action' => 'view',
'pass' => array(123),
'named' => array(),
));
$request->query = array('url' => 'eng/posts/view/123', 'test' => 'value');
$result = Router::reverseToArray($request);
$expected = array(
'controller' => 'posts',
'action' => 'view',
123,
'?' => array(
'test' => 'value',
),
);
$this->assertEquals($expected, $result);
}
/**
* Test that extensions work with Router::reverse()
*