Skip to content
Snippets Groups Projects
Commit cb5416b7 authored by Patrick Paysant's avatar Patrick Paysant
Browse files

Allow default values for route parameters.

parent cd94b54b
No related branches found
No related tags found
No related merge requests found
......@@ -93,6 +93,12 @@ class RouteConfig {
if(array_key_exists('requirements', $simpleRoute)) {
$router->requirements($simpleRoute['requirements']);
}
// optionally register defaults for route. This is used to
// tell the route parser how url parameters should be default valued
if(array_key_exists('defaults', $simpleRoute)) {
$router->defaults($simpleRoute['defaults']);
}
}
}
......
......@@ -45,6 +45,15 @@ class RoutingTest extends \PHPUnit_Framework_TestCase
$this->assertSimpleRoute($routes, 'folders.open', 'DELETE', '/folders/{folderId}/open', 'FoldersController', 'open', array('something'));
}
public function testSimpleRouteWithDefaults()
{
$routes = array('routes' => array(
array('name' => 'folders#open', 'url' => '/folders/{folderId}/open', 'verb' => 'delete', array(), 'defaults' => array('param' => 'foobar'))
));
$this->assertSimpleRoute($routes, 'folders.open', 'DELETE', '/folders/{folderId}/open', 'FoldersController', 'open', array(), array('param' => 'foobar'));
}
/**
* @expectedException \UnexpectedValueException
......@@ -95,10 +104,10 @@ class RoutingTest extends \PHPUnit_Framework_TestCase
* @param string $controllerName
* @param string $actionName
*/
private function assertSimpleRoute($routes, $name, $verb, $url, $controllerName, $actionName, array $requirements=array())
private function assertSimpleRoute($routes, $name, $verb, $url, $controllerName, $actionName, array $requirements=array(), array $defaults=array())
{
// route mocks
$route = $this->mockRoute($verb, $controllerName, $actionName, $requirements);
$route = $this->mockRoute($verb, $controllerName, $actionName, $requirements, $defaults);
// router mock
$router = $this->getMock("\OC\Route\Router", array('create'));
......@@ -181,10 +190,10 @@ class RoutingTest extends \PHPUnit_Framework_TestCase
* @param string $actionName
* @return \PHPUnit_Framework_MockObject_MockObject
*/
private function mockRoute($verb, $controllerName, $actionName, array $requirements=array())
private function mockRoute($verb, $controllerName, $actionName, array $requirements=array(), array $defaults=array())
{
$container = new DIContainer('app1');
$route = $this->getMock("\OC\Route\Route", array('method', 'action', 'requirements'), array(), '', false);
$route = $this->getMock("\OC\Route\Route", array('method', 'action', 'requirements', 'defaults'), array(), '', false);
$route
->expects($this->exactly(1))
->method('method')
......@@ -204,6 +213,15 @@ class RoutingTest extends \PHPUnit_Framework_TestCase
->with($this->equalTo($requirements))
->will($this->returnValue($route));
}
if (count($defaults) > 0) {
$route
->expects($this->exactly(1))
->method('defaults')
->with($this->equalTo($defaults))
->will($this->returnValue($route));
}
return $route;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment