public function testItAddsMiddlewareToANamedRoute()
{
// Reverse instantation
// 'mockedRoute' instead of just 'route' to prevent double-declaration of Route facade.
// Somehow it keeps nagging about that.
$route1 = $this->mock('mockedRoute');
$route1->shouldReceive('getName')->andReturn('route1');
$route1->shouldReceive('middleware')->with(['middlewareA', 'middlewareB'])->once();
$route2 = $this->mock('mockedRoute');
$route2->shouldReceive('getName')->andReturn('route2');
$route2->shouldReceive('middleware')->never();
// Route setup
$routes = [$route1, $route2];
// Intermediate route collection setup
$collection = $this->mock('collection');
$collection->shouldReceive('getIterator')->andReturn($routes);
$router = $this->createExtendedRouter();
$router->shouldReceive('getRoutes')->andReturn($collection);
// Use the real method instead of mocking it
$router->shouldReceive('addMiddlewareToRoute')->passthru();
$router->addMiddlewareToRoute('route1', ['middlewareA', 'middlewareB']);
}