diff --git a/src/Symfony/Routing/ApiLoader.php b/src/Symfony/Routing/ApiLoader.php index 1fa70ab296..bfab134897 100644 --- a/src/Symfony/Routing/ApiLoader.php +++ b/src/Symfony/Routing/ApiLoader.php @@ -126,7 +126,7 @@ public function load(mixed $data, ?string $type = null): RouteCollection $operation->getCondition() ?? '' ); - $routeCollection->add($operationName, $route); + $routeCollection->add($operationName, $route, $operation->getPriority() ?? 0); } } } diff --git a/tests/Symfony/Routing/ApiLoaderTest.php b/tests/Symfony/Routing/ApiLoaderTest.php index 38734a6e62..0f7a87da1f 100644 --- a/tests/Symfony/Routing/ApiLoaderTest.php +++ b/tests/Symfony/Routing/ApiLoaderTest.php @@ -282,6 +282,21 @@ public function testApiLoaderIrisTypeRegistersItemRoutesWithNotExposedController $this->assertNotNull($routeCollection->get('api_genid')); } + public function testApiLoaderUsesOperationPriority(): void + { + $resourceCollection = new ResourceMetadataCollection(Dummy::class, [ + (new ApiResource())->withShortName('dummy')->withOperations(new Operations([ + 'api_dummies_get_item' => (new Get())->withUriTemplate('/dummies/{id}')->withPriority(10), + 'api_dummies_get_collection' => (new GetCollection())->withUriTemplate('/dummies'), + ])), + ]); + + $routeCollection = $this->getApiLoaderWithResourceMetadataCollection($resourceCollection)->load(null); + + $this->assertSame(10, $routeCollection->getPriority('api_dummies_get_item')); + $this->assertNull($routeCollection->getPriority('api_dummies_get_collection')); + } + public function testApiLoaderWithUndefinedControllerService(): void { $this->expectExceptionObject(new \RuntimeException('Operation "api_dummies_my_undefined_controller_method_item" is defining an unknown service as controller "Foo\\Bar\\MyUndefinedController". Make sure it is properly registered in the dependency injection container.'));