public function testMatchWithBasePathAndMiddlewares() { $router = new Router(); $router->setBasePath('my-site'); $router->setRoutes(['my' => ['methods' => ['GET'], 'route' => '/my/{id}', 'handler' => [], 'filters' => ['id' => '([\\d-]+)'], 'middlewares' => ['midd1', 'midd2'], 'child_routes' => ['my-sub' => ['methods' => ['GET', 'POST'], 'route' => '/sub/{p}', 'handler' => [], 'filters' => ['p' => '(\\d+)'], 'middlewares' => ['midd2.1', 'midd2.2']]]]]); $router->addMiddleware('my', ['midd3.1', 'midd3.2']); $router->addMiddleware('my-sub', ['midd4.1', 'midd4.2']); $result = $router->match('GET', '/my-site/my/10'); $this->assertTrue($result->isFound()); $this->assertEquals('my', $result->getName()); $this->assertEquals([], $result->getHandler()); $this->assertEquals(['id' => 10], $result->getParams()); $this->assertEquals(['midd1', 'midd2', 'midd3.1', 'midd3.2'], $result->getMiddlewares()); $result = $router->match('GET', '/my-site/my/10/sub/22'); $this->assertTrue($result->isFound()); $this->assertEquals('my-sub', $result->getName()); $this->assertEquals([], $result->getHandler()); $this->assertEquals(['id' => 10, 'p' => 22], $result->getParams()); $this->assertEquals(['midd1', 'midd2', 'midd2.1', 'midd2.2', 'midd3.1', 'midd3.2', 'midd4.1', 'midd4.2'], $result->getMiddlewares()); }