public function testBefore()
 {
     $controllers = new ControllerCollection(new Route());
     $controllers->before('mid1');
     $controller = $controllers->match('/{id}/{name}/{extra}', function () {
     })->before('mid2');
     $controllers->before('mid3');
     $this->assertEquals(array('mid1', 'mid2', 'mid3'), $controller->getRoute()->getOption('_before_middlewares'));
 }
 public function testNestedCollectionRouteCallbacks()
 {
     $cl1 = new ControllerCollection(new MyRoute1());
     $cl2 = new ControllerCollection(new MyRoute1());
     $c1 = $cl2->match('/c1', function () {
     });
     $cl1->mount('/foo', $cl2);
     $c2 = $cl2->match('/c2', function () {
     });
     $cl1->before('before');
     $c3 = $cl2->match('/c3', function () {
     });
     $cl1->flush();
     $this->assertEquals(array('before'), $c1->getRoute()->getOption('_before_middlewares'));
     $this->assertEquals(array('before'), $c2->getRoute()->getOption('_before_middlewares'));
     $this->assertEquals(array('before'), $c3->getRoute()->getOption('_before_middlewares'));
 }