From a7bb36a987bba6cbaccb2f8db83e16aef9464d01 Mon Sep 17 00:00:00 2001 From: Matt Glaman <matt.glaman@acquia.com> Date: Wed, 3 Apr 2024 11:56:58 -0500 Subject: [PATCH] reroll patch --- src/Unstable/Routing/ResourceRoutes.php | 15 ++++++++++++++- tests/src/Unit/Routing/ResourceRoutesTest.php | 3 +++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/Unstable/Routing/ResourceRoutes.php b/src/Unstable/Routing/ResourceRoutes.php index b6fd8a9..8b5e407 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 16d6d5e..cd98616 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')); } /** -- GitLab