📄 router.test.php
字号:
<?php/* SVN FILE: $Id: router.test.php 7118 2008-06-04 20:49:29Z gwoo $ *//** * Short description for file. * * Long description for file * * PHP versions 4 and 5 * * CakePHP(tm) Tests <https://trac.cakephp.org/wiki/Developement/TestSuite> * Copyright 2005-2008, Cake Software Foundation, Inc. * 1785 E. Sahara Avenue, Suite 490-204 * Las Vegas, Nevada 89104 * * Licensed under The Open Group Test Suite License * Redistributions of files must retain the above copyright notice. * * @filesource * @copyright Copyright 2005-2008, Cake Software Foundation, Inc. * @link https://trac.cakephp.org/wiki/Developement/TestSuite CakePHP(tm) Tests * @package cake.tests * @subpackage cake.tests.cases.libs * @since CakePHP(tm) v 1.2.0.4206 * @version $Revision: 7118 $ * @modifiedby $LastChangedBy: gwoo $ * @lastmodified $Date: 2008-06-04 13:49:29 -0700 (Wed, 04 Jun 2008) $ * @license http://www.opensource.org/licenses/opengroup.php The Open Group Test Suite License */App::import('Core', array('Router', 'Debugger'));if (!defined('FULL_BASE_URL')) { define('FULL_BASE_URL', 'http://cakephp.org');}/** * Short description for class. * * @package cake.tests * @subpackage cake.tests.cases.libs */class RouterTest extends UnitTestCase {/** * setUp method * * @access public * @return void */ function setUp() { Router::reload(); $this->router =& Router::getInstance(); }/** * testReturnedInstanceReference method * * @access public * @return void */ function testReturnedInstanceReference() { $this->router->testVar = 'test'; $this->assertIdentical($this->router, Router::getInstance()); unset($this->router->testVar); }/** * testFullBaseURL method * * @access public * @return void */ function testFullBaseURL() { $this->assertPattern('/^http(s)?:\/\//', Router::url('/', true)); $this->assertPattern('/^http(s)?:\/\//', Router::url(null, true)); }/** * testRouteWriting method * * @access public * @return void */ function testRouteWriting() { Router::connect('/'); $this->assertEqual($this->router->routes[0][0], '/'); $this->assertEqual($this->router->routes[0][1], '/^[\/]*$/'); $this->assertEqual($this->router->routes[0][2], array()); Router::reload(); Router::connect('/', array('controller' => 'testing')); $this->assertTrue(is_array($this->router->routes[0][3]) && !empty($this->router->routes[0][3])); $this->assertEqual($this->router->routes[0][3]['controller'], 'testing'); $this->assertEqual($this->router->routes[0][3]['action'], 'index'); $this->assertEqual(count($this->router->routes[0][3]), 3); $this->router->routes = array(); Router::connect('/:controller', array('controller' => 'testing2')); $this->assertTrue(is_array($this->router->routes[0][3]) && !empty($this->router->routes[0][3]), '/'); $this->assertEqual($this->router->routes[0][3]['controller'], 'testing2'); $this->assertEqual($this->router->routes[0][3]['action'], 'index'); $this->assertEqual(count($this->router->routes[0][3]), 3); $this->router->routes = array(); Router::connect('/:controller/:action', array('controller' => 'testing3')); $this->assertEqual($this->router->routes[0][0], '/:controller/:action'); $this->assertEqual($this->router->routes[0][1], '#^(?:/([^\/]+))?(?:/([^\/]+))?[\/]*$#'); $this->assertEqual($this->router->routes[0][2], array('controller', 'action')); $this->assertEqual($this->router->routes[0][3], array('controller' => 'testing3', 'action' => 'index', 'plugin' => null)); $this->router->routes = array(); Router::connect('/:controller/:action/:id', array('controller' => 'testing4', 'id' => null), array('id' => $this->router->__named['ID'])); $this->assertEqual($this->router->routes[0][0], '/:controller/:action/:id'); $this->assertEqual($this->router->routes[0][1], '#^(?:/([^\/]+))?(?:/([^\/]+))?(?:/([0-9]+)?)?[\/]*$#'); $this->assertEqual($this->router->routes[0][2], array('controller', 'action', 'id')); $this->router->routes = array(); Router::connect('/:controller/:action/:id', array('controller' => 'testing4'), array('id' => $this->router->__named['ID'])); $this->assertEqual($this->router->routes[0][1], '#^(?:/([^\/]+))?(?:/([^\/]+))?(?:/([0-9]+))[\/]*$#'); $this->router->routes = array(); Router::connect('/posts/foo:id'); $this->assertEqual($this->router->routes[0][2], array('id')); $this->assertEqual($this->router->routes[0][1], '#^/posts(?:/foo([^\/]+))?[\/]*$#'); foreach (array(':', '@', ';', '$', '-') as $delim) { $this->router->routes = array(); Router::connect('/posts/:id'.$delim.':title'); $this->assertEqual($this->router->routes[0][2], array('id', 'title')); $this->assertEqual($this->router->routes[0][1], '#^/posts(?:/([^\/]+))?(?:'.preg_quote($delim, '#').'([^\/]+))?[\/]*$#'); } $this->router->routes = array(); Router::connect('/posts/:id::title/:year'); $this->assertEqual($this->router->routes[0][2], array('id', 'title', 'year')); $this->assertEqual($this->router->routes[0][1], '#^/posts(?:/([^\/]+))?(?:\\:([^\/]+))?(?:/([^\/]+))?[\/]*$#'); }/** * testRouteDefaultParams method * * @access public * @return void */ function testRouteDefaultParams() { Router::connect('/:controller', array('controller' => 'posts')); $this->assertEqual(Router::url(array('action' => 'index')), '/'); }/** * testRouterIdentity method * * @access public * @return void */ function testRouterIdentity() { $router2 = new Router(); $this->assertEqual(get_object_vars($this->router), get_object_vars($router2)); }/** * testResourceRoutes method * * @access public * @return void */ function testResourceRoutes() { Router::mapResources('Posts'); $_SERVER['REQUEST_METHOD'] = 'GET'; $result = Router::parse('/posts'); $this->assertEqual($result, array('pass' => array(), 'named' => array(), 'plugin' => '', 'controller' => 'posts', 'action' => 'index', '[method]' => 'GET')); $this->assertEqual($this->router->__resourceMapped, array('posts')); $_SERVER['REQUEST_METHOD'] = 'GET'; $result = Router::parse('/posts/13'); $this->assertEqual($result, array('pass' => array('13'), 'named' => array(), 'plugin' => '', 'controller' => 'posts', 'action' => 'view', 'id' => '13', '[method]' => 'GET')); $this->assertEqual($this->router->__resourceMapped, array('posts')); $_SERVER['REQUEST_METHOD'] = 'POST'; $result = Router::parse('/posts'); $this->assertEqual($result, array('pass' => array(), 'named' => array(), 'plugin' => '', 'controller' => 'posts', 'action' => 'add', '[method]' => 'POST')); $this->assertEqual($this->router->__resourceMapped, array('posts')); $_SERVER['REQUEST_METHOD'] = 'PUT'; $result = Router::parse('/posts/13'); $this->assertEqual($result, array('pass' => array('13'), 'named' => array(), 'plugin' => '', 'controller' => 'posts', 'action' => 'edit', 'id' => '13', '[method]' => 'PUT')); $this->assertEqual($this->router->__resourceMapped, array('posts')); $result = Router::parse('/posts/475acc39-a328-44d3-95fb-015000000000'); $this->assertEqual($result, array('pass' => array('475acc39-a328-44d3-95fb-015000000000'), 'named' => array(), 'plugin' => '', 'controller' => 'posts', 'action' => 'edit', 'id' => '475acc39-a328-44d3-95fb-015000000000', '[method]' => 'PUT')); $this->assertEqual($this->router->__resourceMapped, array('posts')); $_SERVER['REQUEST_METHOD'] = 'DELETE'; $result = Router::parse('/posts/13'); $this->assertEqual($result, array('pass' => array('13'), 'named' => array(), 'plugin' => '', 'controller' => 'posts', 'action' => 'delete', 'id' => '13', '[method]' => 'DELETE')); $this->assertEqual($this->router->__resourceMapped, array('posts')); $_SERVER['REQUEST_METHOD'] = 'GET'; $result = Router::parse('/posts/add'); $this->assertEqual($result, array('pass' => array(), 'named' => array(), 'plugin' => '', 'controller' => 'posts', 'action' => 'add')); $this->assertEqual($this->router->__resourceMapped, array('posts')); Router::reload(); Router::mapResources('Posts', array('id' => '[a-z0-9_]+')); $_SERVER['REQUEST_METHOD'] = 'GET'; $result = Router::parse('/posts/add'); $this->assertEqual($result, array('pass' => array('add'), 'named' => array(), 'plugin' => '', 'controller' => 'posts', 'action' => 'view', 'id' => 'add', '[method]' => 'GET')); $this->assertEqual($this->router->__resourceMapped, array('posts')); $_SERVER['REQUEST_METHOD'] = 'PUT'; $result = Router::parse('/posts/name'); $this->assertEqual($result, array('pass' => array('name'), 'named' => array(), 'plugin' => '', 'controller' => 'posts', 'action' => 'edit', 'id' => 'name', '[method]' => 'PUT')); $this->assertEqual($this->router->__resourceMapped, array('posts')); }/** * testMultipleResourceRoute method * * @access public * @return void */ function testMultipleResourceRoute() { Router::connect('/:controller', array('action' => 'index', '[method]' => array('GET', 'POST'))); $_SERVER['REQUEST_METHOD'] = 'GET'; $result = Router::parse('/posts'); $this->assertEqual($result, array('pass' => array(), 'named' => array(), 'plugin' => '', 'controller' => 'posts', 'action' => 'index', '[method]' => array('GET', 'POST'))); $_SERVER['REQUEST_METHOD'] = 'POST'; $result = Router::parse('/posts'); $this->assertEqual($result, array('pass' => array(), 'named' => array(), 'plugin' => '', 'controller' => 'posts', 'action' => 'index', '[method]' => array('GET', 'POST'))); }/** * testUrlNormalization method * * @access public * @return void */ function testUrlNormalization() { $expected = '/users/logout'; $result = Router::normalize('/users/logout/'); $this->assertEqual($result, $expected); $result = Router::normalize('//users//logout//'); $this->assertEqual($result, $expected); $result = Router::normalize('users/logout'); $this->assertEqual($result, $expected); $result = Router::normalize(array('controller' => 'users', 'action' => 'logout')); $this->assertEqual($result, $expected); $result = Router::normalize('/'); $this->assertEqual($result, '/'); }/** * testUrlGeneration method * * @access public * @return void */ function testUrlGeneration() { extract(Router::getNamedExpressions()); Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'home')); $out = Router::url(array('controller' => 'pages', 'action' => 'display', 'home')); $this->assertEqual($out, '/'); Router::connect('/pages/*', array('controller' => 'pages', 'action' => 'display')); $result = Router::url(array('controller' => 'pages', 'action' => 'display', 'about')); $expected = '/pages/about'; $this->assertEqual($result, $expected); Router::reload(); Router::parse('/'); Router::connect('/:plugin/:id/*', array('controller' => 'posts', 'action' => 'view'), array('id' => $ID)); $result = Router::url(array('plugin' => 'cake_plugin', 'controller' => 'posts', 'action' => 'view', 'id' => '1')); $expected = '/cake_plugin/1'; $this->assertEqual($result, $expected); $result = Router::url(array('plugin' => 'cake_plugin', 'controller' => 'posts', 'action' => 'view', 'id' => '1', '0')); $expected = '/cake_plugin/1/0';
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -