From 245cf4e9c986a6629ddfdb275b8470138d26521f Mon Sep 17 00:00:00 2001 From: Benjamin GAREL Date: Wed, 7 Jun 2017 13:55:32 +0200 Subject: [PATCH] Change the behavior of path_patterns filter to use OR instead of AND --- Routing/FilteredRouteCollectionBuilder.php | 6 +-- .../FilteredRouteCollectionBuilderTest.php | 43 +++++++++++++++++++ 2 files changed, 46 insertions(+), 3 deletions(-) create mode 100644 Tests/Routing/FilteredRouteCollectionBuilderTest.php diff --git a/Routing/FilteredRouteCollectionBuilder.php b/Routing/FilteredRouteCollectionBuilder.php index 06ef512..19e4cef 100644 --- a/Routing/FilteredRouteCollectionBuilder.php +++ b/Routing/FilteredRouteCollectionBuilder.php @@ -38,11 +38,11 @@ final class FilteredRouteCollectionBuilder private function match(Route $route): bool { foreach ($this->pathPatterns as $pathPattern) { - if (!preg_match('{'.$pathPattern.'}', $route->getPath())) { - return false; + if (preg_match('{'.$pathPattern.'}', $route->getPath())) { + return true; } } - return true; + return false; } } diff --git a/Tests/Routing/FilteredRouteCollectionBuilderTest.php b/Tests/Routing/FilteredRouteCollectionBuilderTest.php new file mode 100644 index 0000000..4b57b53 --- /dev/null +++ b/Tests/Routing/FilteredRouteCollectionBuilderTest.php @@ -0,0 +1,43 @@ +add('r1', new Route('/api/bar/action1')); + $routes->add('r2', new Route('/api/foo/action1')); + $routes->add('r3', new Route('/api/foo/action2')); + $routes->add('r4', new Route('/api/demo')); + $routes->add('r5', new Route('/_profiler/test/test')); + + $routeBuilder = new FilteredRouteCollectionBuilder($pathPattern); + $filteredRoutes = $routeBuilder->filter($routes); + + $this->assertCount(3, $filteredRoutes); + } +}