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