diff --git a/src/Unstable/Routing/ResourceRoutes.php b/src/Unstable/Routing/ResourceRoutes.php index b6fd8a9122f218e9cc64a659459ee93198673da0..8b5e4075b7bf7642ac90334703247a826dcc8a0b 100644 --- a/src/Unstable/Routing/ResourceRoutes.php +++ b/src/Unstable/Routing/ResourceRoutes.php @@ -86,7 +86,7 @@ final class ResourceRoutes implements EventSubscriberInterface { public function decorateJsonapiResourceRoutes(RouteBuildEvent $event) { $route_collection = $event->getRouteCollection(); foreach ($route_collection as $route_name => $route) { - if ($route->getDefault('_jsonapi_resource') === NULL) { + if (!self::isJsonApiResourceRequest($route->getDefaults())) { continue; } @@ -211,4 +211,17 @@ final class ResourceRoutes implements EventSubscriberInterface { } } + /** + * Determines if the given request is for a JSON:API Resource route. + * + * * @param array $defaults + * * The request's route defaults. + * * + * * @return bool + * * Whether the request targets a generated route. + */ + public static function isJsonApiResourceRequest(array $defaults) { + return !empty($defaults['_jsonapi_resource']); + } + } diff --git a/tests/src/Unit/Routing/ResourceRoutesTest.php b/tests/src/Unit/Routing/ResourceRoutesTest.php index 16d6d5e4474f19ff00f6bb3c654e47c6c904981f..cd986163f9ad6599907ddaa8bdac92b6d02186dd 100644 --- a/tests/src/Unit/Routing/ResourceRoutesTest.php +++ b/tests/src/Unit/Routing/ResourceRoutesTest.php @@ -49,16 +49,19 @@ final class ResourceRoutesTest extends UnitTestCase { $generic_route = $route_collection->get('generic_route'); $this->assertSame('/generic', $generic_route->getPath()); $this->assertNull($generic_route->getOption('_auth')); + $this->assertNull($generic_route->getRequirement('_format')); $jsonapi_resource_route = $route_collection->get('jsonapi_resource_route'); $this->assertSame('/custom-base-path/resource', $jsonapi_resource_route->getPath()); $this->assertSame(['GET'], $jsonapi_resource_route->getMethods()); $this->assertSame(['basic_auth'], $jsonapi_resource_route->getOption('_auth')); + $this->assertEquals('api_json', $jsonapi_resource_route->getRequirement('_format')); $multi_method_route = $route_collection->get('jsonapi_resource_multi_method_route'); $this->assertSame('/custom-base-path/resource', $multi_method_route->getPath()); $this->assertSame(['POST', 'PATCH'], $multi_method_route->getMethods()); $this->assertSame(['basic_auth'], $multi_method_route->getOption('_auth')); + $this->assertEquals('api_json', $multi_method_route->getRequirement('_format')); } /**