public function testConfigManipulation() { $config = MockDispatcher::config(); $expected = array('rules' => array()); $this->assertEqual($expected, $config); MockDispatcher::config(array('rules' => array('admin' => array('action' => 'admin_{:action}')))); Router::connect('/', array('controller' => 'test', 'action' => 'test', 'admin' => true)); MockDispatcher::run(new Request(array('url' => '/'))); $result = end(MockDispatcher::$dispatched); $expected = array('action' => 'admin_test', 'controller' => 'Test', 'admin' => true); $this->assertEqual($expected, $result->params); }
public function testConfigManipulation() { $config = MockDispatcher::config(); $expected = array('rules' => array()); $this->assertEqual($expected, $config); MockDispatcher::config(array('rules' => array('admin' => array('action' => 'admin_{:action}')))); Router::connect('/', array('controller' => 'test', 'action' => 'test', 'admin' => true)); MockDispatcher::run(new Request(array('url' => '/'))); $result = end(MockDispatcher::$dispatched); $expected = array('action' => 'admin_test', 'controller' => 'Test', 'admin' => true); $this->assertEqual($expected, $result->params); MockDispatcher::config(array('rules' => array('action' => array('action' => function ($params) { return Inflector::camelize(strtolower($params['action']), false); })))); MockDispatcher::$dispatched = array(); Router::reset(); Router::connect('/', array('controller' => 'test', 'action' => 'TeST-camelize')); MockDispatcher::run(new Request(array('url' => '/'))); $result = end(MockDispatcher::$dispatched); $expected = array('action' => 'testCamelize', 'controller' => 'Test'); $this->assertEqual($expected, $result->params); MockDispatcher::config(array('rules' => function ($params) { if (isset($params['admin'])) { return array('special' => array('action' => 'special_{:action}')); } return array(); })); MockDispatcher::$dispatched = array(); Router::reset(); Router::connect('/', array('controller' => 'test', 'action' => 'test', 'admin' => true)); Router::connect('/special', array('controller' => 'test', 'action' => 'test', 'admin' => true, 'special' => true)); MockDispatcher::run(new Request(array('url' => '/'))); $result = end(MockDispatcher::$dispatched); $expected = array('action' => 'test', 'controller' => 'Test', 'admin' => true); $this->assertEqual($expected, $result->params); MockDispatcher::run(new Request(array('url' => '/special'))); $result = end(MockDispatcher::$dispatched); $expected = array('action' => 'special_test', 'controller' => 'Test', 'admin' => true, 'special' => true); $this->assertEqual($expected, $result->params); }
public function testRunWithContinuingRules() { MockDispatcher::config(array('rules' => array('api' => array('action' => 'api_{:action}'), 'admin' => array('action' => 'admin_{:action}')))); Router::connect('/', array('controller' => 'test', 'action' => 'test', 'admin' => true, 'api' => true)); MockDispatcher::run(new Request(array('url' => '/'))); $result = end(MockDispatcher::$dispatched); $expected = array('action' => 'admin_api_test', 'controller' => 'Test', 'admin' => true, 'api' => true); $this->assertEqual($expected, $result->params); }