Browse Source

Add test case

mscherer 7 years ago
parent
commit
d73dbfe4a5

+ 2 - 1
tests/TestCase/Routing/Filter/RoutingFilterTest.php

@@ -18,6 +18,7 @@ use Cake\Event\Event;
 use Cake\Http\Response;
 use Cake\Http\ServerRequest;
 use Cake\Routing\Filter\RoutingFilter;
+use Cake\Routing\RouteBuilder;
 use Cake\Routing\Router;
 use Cake\TestSuite\TestCase;
 
@@ -82,7 +83,7 @@ class RoutingFilterTest extends TestCase
      */
     public function testBeforeDispatchRedirectRoute()
     {
-        Router::scope('/', function ($routes) {
+        Router::scope('/', function (RouteBuilder $routes) {
             $routes->redirect('/home', ['controller' => 'articles']);
             $routes->connect('/:controller/:action/*');
         });

+ 1 - 1
tests/TestCase/Routing/RouteBuilderTest.php

@@ -582,7 +582,7 @@ class RouteBuilderTest extends TestCase
     public function testResourcesPathOption()
     {
         $routes = new RouteBuilder($this->collection, '/api');
-        $routes->resources('Articles', ['path' => 'posts'], function ($routes) {
+        $routes->resources('Articles', ['path' => 'posts'], function (RouteBuilder $routes) {
             $routes->resources('Comments');
         });
         $all = $this->collection->routes();

+ 15 - 1
tests/TestCase/TestSuite/IntegrationTestCaseTest.php

@@ -19,6 +19,7 @@ use Cake\Core\Plugin;
 use Cake\Event\EventManager;
 use Cake\Http\Response;
 use Cake\Routing\DispatcherFactory;
+use Cake\Routing\RouteBuilder;
 use Cake\Routing\Router;
 use Cake\Routing\Route\InflectedRoute;
 use Cake\TestSuite\IntegrationTestCase;
@@ -43,7 +44,8 @@ class IntegrationTestCaseTest extends IntegrationTestCase
         static::setAppNamespace();
 
         Router::reload();
-        Router::scope('/', function ($routes) {
+        Router::extensions(['json']);
+        Router::scope('/', function (RouteBuilder $routes) {
             $routes->setRouteClass(InflectedRoute::class);
             $routes->get('/get/:controller/:action', []);
             $routes->head('/head/:controller/:action', []);
@@ -571,6 +573,18 @@ class IntegrationTestCaseTest extends IntegrationTestCase
     }
 
     /**
+     * Tests URLs containing extensions.
+     *
+     * @return void
+     */
+    public function testRequestWithExt()
+    {
+        $this->get(['controller' => 'Posts', 'action' => 'ajax', '_ext' => 'json']);
+
+        $this->assertResponseCode(200);
+    }
+
+    /**
      * Assert that the stored template doesn't change when cells are rendered.
      *
      * @return void

+ 16 - 2
tests/test_app/TestApp/Application.php

@@ -16,16 +16,24 @@ namespace TestApp;
 
 use Cake\Http\BaseApplication;
 use Cake\Routing\Middleware\RoutingMiddleware;
+use Cake\Routing\RouteBuilder;
 use TestApp\Command\AbortCommand;
 
 class Application extends BaseApplication
 {
-
+    /**
+     * @return void
+     */
     public function bootstrap()
     {
         parent::bootstrap();
     }
 
+    /**
+     * @param \Cake\Console\CommandCollection $commands
+     *
+     * @return \Cake\Console\CommandCollection
+     */
     public function console($commands)
     {
         return $commands
@@ -33,10 +41,16 @@ class Application extends BaseApplication
             ->addMany($commands->autoDiscover());
     }
 
+    /**
+     * @param \Cake\Http\MiddlewareQueue $middleware
+     *
+     * @return \Cake\Http\MiddlewareQueue
+     */
     public function middleware($middleware)
     {
         $middleware->add(new RoutingMiddleware());
         $middleware->add(function ($req, $res, $next) {
+            /** @var \Cake\Http\ServerRequest $res */
             $res = $next($req, $res);
 
             return $res->withHeader('X-Middleware', 'true');
@@ -53,7 +67,7 @@ class Application extends BaseApplication
      */
     public function routes($routes)
     {
-        $routes->scope('/app', function ($routes) {
+        $routes->scope('/app', function (RouteBuilder $routes) {
             $routes->connect('/articles', ['controller' => 'Articles']);
         });
     }

+ 5 - 0
tests/test_app/TestApp/ApplicationWithDefaultRoutes.php

@@ -39,6 +39,11 @@ class ApplicationWithDefaultRoutes extends BaseApplication
         // Do nothing.
     }
 
+    /**
+     * @param \Cake\Http\MiddlewareQueue $middlewareQueue
+     *
+     * @return \Cake\Http\MiddlewareQueue
+     */
     public function middleware($middlewareQueue)
     {
         $middlewareQueue->add(new RoutingMiddleware($this));

+ 10 - 1
tests/test_app/TestApp/ApplicationWithPluginRoutes.php

@@ -16,15 +16,24 @@ namespace TestApp;
 
 use Cake\Http\BaseApplication;
 use Cake\Routing\Middleware\RoutingMiddleware;
+use Cake\Routing\RouteBuilder;
 
 class ApplicationWithPluginRoutes extends BaseApplication
 {
+    /**
+     * @return void
+     */
     public function bootstrap()
     {
         parent::bootstrap();
         $this->addPlugin('TestPlugin');
     }
 
+    /**
+     * @param \Cake\Http\MiddlewareQueue $middleware
+     *
+     * @return \Cake\Http\MiddlewareQueue
+     */
     public function middleware($middleware)
     {
         $middleware->add(new RoutingMiddleware($this));
@@ -40,7 +49,7 @@ class ApplicationWithPluginRoutes extends BaseApplication
      */
     public function routes($routes)
     {
-        $routes->scope('/app', function ($routes) {
+        $routes->scope('/app', function (RouteBuilder $routes) {
             $routes->connect('/articles', ['controller' => 'Articles']);
         });
         $routes->loadPlugin('TestPlugin');

+ 13 - 0
tests/test_app/TestApp/Controller/PostsController.php

@@ -83,6 +83,19 @@ class PostsController extends AppController
     }
 
     /**
+     * Stub AJAX method
+     *
+     * @return void
+     */
+    public function ajax()
+    {
+        $data = [];
+
+        $this->set(compact('data'));
+        $this->set('_serialize', ['data']);
+    }
+
+    /**
      * Post endpoint for integration testing with security component.
      *
      * @return void

+ 3 - 1
tests/test_app/config/routes.php

@@ -12,10 +12,12 @@
  * @since         2.0.0
  * @license       https://opensource.org/licenses/mit-license.php MIT License
  */
+
+use Cake\Routing\RouteBuilder;
 use Cake\Routing\Router;
 
 Router::extensions('json');
-Router::scope('/', function ($routes) {
+Router::scope('/', function (RouteBuilder $routes) {
     $routes->connect('/', ['controller' => 'pages', 'action' => 'display', 'home']);
     $routes->connect(
         '/some_alias',