Merge pull request #9228 from owncloud/remove-routing-singular-issues

Routing: Dont strip the s from the resource id to prevent possible weird behavior with irregular english plural nouns
This commit is contained in:
Morris Jobke 2014-07-14 17:10:07 +02:00
commit 9ee1c7ff71
2 changed files with 6 additions and 16 deletions

View file

@ -88,7 +88,7 @@ class RouteConfig {
->method($verb)
->action($handler);
// optionally register requirements for route. This is used to
// optionally register requirements for route. This is used to
// tell the route parser how url parameters should be matched
if(array_key_exists('requirements', $simpleRoute)) {
$router->requirements($simpleRoute['requirements']);
@ -122,14 +122,13 @@ class RouteConfig {
foreach ($resources as $resource => $config) {
// the url parameter used as id to the resource
$resourceId = $this->buildResourceId($resource);
foreach($actions as $action) {
$url = $config['url'];
$method = $action['name'];
$verb = isset($action['verb']) ? strtoupper($action['verb']) : 'GET';
$collectionAction = isset($action['on-collection']) ? $action['on-collection'] : false;
if (!$collectionAction) {
$url = $url . '/' . $resourceId;
$url = $url . '/{id}';
}
if (isset($action['url-postfix'])) {
$url = $url . '/' . $action['url-postfix'];
@ -168,15 +167,6 @@ class RouteConfig {
return $this->underScoreToCamelCase($action);
}
/**
* Generates the id used in the url part o the route url
* @param string $resource
* @return string
*/
private function buildResourceId($resource) {
return '{'.$this->underScoreToCamelCase(rtrim($resource, 's')).'Id}';
}
/**
* Underscored strings are converted to camel case strings
* @param string $str

View file

@ -6,7 +6,7 @@ use OC\AppFramework\DependencyInjection\DIContainer;
use OC\AppFramework\routing\RouteConfig;
class RouteConfigTest extends \PHPUnit_Framework_TestCase
class RoutingTest extends \PHPUnit_Framework_TestCase
{
public function testSimpleRoute()
@ -76,16 +76,16 @@ class RouteConfigTest extends \PHPUnit_Framework_TestCase
public function testResource()
{
$routes = array('resources' => array('accounts' => array('url' => '/accounts')));
$routes = array('resources' => array('account' => array('url' => '/accounts')));
$this->assertResource($routes, 'accounts', '/accounts', 'AccountsController', 'accountId');
$this->assertResource($routes, 'account', '/accounts', 'AccountController', 'id');
}
public function testResourceWithUnderScoreName()
{
$routes = array('resources' => array('admin_accounts' => array('url' => '/admin/accounts')));
$this->assertResource($routes, 'admin_accounts', '/admin/accounts', 'AdminAccountsController', 'adminAccountId');
$this->assertResource($routes, 'admin_accounts', '/admin/accounts', 'AdminAccountsController', 'id');
}
/**