Esempio n. 1
0
 /**
  * Test group define and middleware for group.
  */
 public function testGroup()
 {
     TestUtils::clearRoutes();
     // Called?
     $globalBefore = false;
     $globalBeforePost = false;
     $globalAfter = false;
     $groupBefore = false;
     $groupAfter = false;
     // Done int.
     $done = 0;
     // Hold if we already called.
     $called = false;
     // Set global middleware, before.
     Router::getInstance()->before(function () use(&$globalBefore) {
         $globalBefore = true;
     });
     Router::getInstance()->before(function () use(&$globalBeforePost) {
         $globalBeforePost = true;
     }, null, ['POST']);
     Router::getInstance()->after(function () use(&$globalAfter) {
         $globalAfter = true;
     });
     // Define group.
     Router::group('group1', function (Router $router) use(&$done, &$called, &$groupBefore, &$groupAfter) {
         // Add before that will only pass 1 time (the first time)
         $router->before(function () use(&$called, &$groupBefore) {
             $groupBefore = true;
             if ($called) {
                 return false;
             }
             $called = true;
             return true;
         });
         // Add test get
         $router->get('/middleware/1', function () use(&$done) {
             $done++;
         });
         // Add test after
         $router->after(function () use(&$groupAfter) {
             $groupAfter = true;
         });
     });
     Router::getInstance()->post("/middleware/2", function () use(&$done) {
         $done++;
     });
     // Ok, lets spoof.
     $router = Router::getInstance();
     $this->spoof('/middleware/1', 'GET');
     $router->run();
     $this->assertEquals(1, $done);
     $this->assertTrue($globalBefore);
     $this->assertTrue($globalAfter);
     $this->assertTrue($groupBefore);
     $this->assertTrue($groupAfter);
     $this->assertFalse($globalBeforePost);
     // Second time should not call the $done one again!
     $this->spoof('/middleware/1', 'GET');
     $router->run();
     $this->assertEquals(1, $done);
     $this->assertTrue($globalBefore);
     $this->assertTrue($globalAfter);
     $this->assertTrue($groupBefore);
     $this->assertTrue($groupAfter);
     $this->assertFalse($globalBeforePost);
     // Call the post one!
     $this->spoof('/middleware/2', 'POST');
     $router->run();
     $this->assertEquals(2, $done);
     $this->assertTrue($globalBefore);
     $this->assertTrue($globalAfter);
     $this->assertTrue($groupBefore);
     $this->assertTrue($groupAfter);
     $this->assertTrue($globalBeforePost);
 }