From 5af6464a49204f873aeac52024d295787809822a Mon Sep 17 00:00:00 2001 From: AD7six Date: Tue, 18 Nov 2014 14:21:10 +0000 Subject: [PATCH] change fallbacks to accept a route class --- src/Routing/RouteBuilder.php | 9 ++++----- tests/TestCase/Routing/RouteBuilderTest.php | 15 +++++++++++++++ 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/src/Routing/RouteBuilder.php b/src/Routing/RouteBuilder.php index 9a297efcb92..7f3ee63da11 100644 --- a/src/Routing/RouteBuilder.php +++ b/src/Routing/RouteBuilder.php @@ -546,13 +546,12 @@ public function scope($path, $params, $callback = null) { * * This is a shortcut method for connecting fallback routes in a given scope. * + * @param string $routeClass the route class to use, uses the default routeClass + * if not specified * @return void */ - public function fallbacks() { - $routeClass = $this->_routeClass; - if ($routeClass === 'Cake\Routing\Route\Route') { - $routeClass = 'InflectedRoute'; - } + public function fallbacks($routeClass = null) { + $routeClass = $routeClass ?: $this->_routeClass; $this->connect('/:controller', ['action' => 'index'], compact('routeClass')); $this->connect('/:controller/:action/*', [], compact('routeClass')); } diff --git a/tests/TestCase/Routing/RouteBuilderTest.php b/tests/TestCase/Routing/RouteBuilderTest.php index 7dd34290752..1297afcd89f 100644 --- a/tests/TestCase/Routing/RouteBuilderTest.php +++ b/tests/TestCase/Routing/RouteBuilderTest.php @@ -432,6 +432,21 @@ public function testFallbacks() { $routes = new RouteBuilder($this->collection, '/api', ['prefix' => 'api']); $routes->fallbacks(); + $all = $this->collection->routes(); + $this->assertEquals('/api/:controller', $all[0]->template); + $this->assertEquals('/api/:controller/:action/*', $all[1]->template); + $this->assertInstanceOf('Cake\Routing\Route\Route', $all[0]); + } + +/** + * Test connecting fallback routes with specific route class + * + * @return void + */ + public function testFallbacksWithClass() { + $routes = new RouteBuilder($this->collection, '/api', ['prefix' => 'api']); + $routes->fallbacks('InflectedRoute'); + $all = $this->collection->routes(); $this->assertEquals('/api/:controller', $all[0]->template); $this->assertEquals('/api/:controller/:action/*', $all[1]->template);