From 2c87089c4330cd2f571f023fbcc36b5edd2b4dbb Mon Sep 17 00:00:00 2001 From: Antoine Bluchet Date: Tue, 1 Sep 2020 09:44:28 +0200 Subject: [PATCH] Fix tests (#3698) * Use symfony/serializer >=4.4.9-5.0.9 to fix issues https://github.com/symfony/symfony/issues/34455 https://github.com/symfony/symfony/pull/36601 * Lowest + legacy test suite missing git * fix Symfony 5 router generate with reference type --- .github/workflows/ci.yml | 1 + composer.json | 2 +- src/Bridge/Symfony/Routing/IriConverter.php | 3 ++- tests/Bridge/Symfony/Routing/IriConverterTest.php | 12 ++++++------ 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9eb23cb959a..91b997d1406 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -829,6 +829,7 @@ jobs: - name: Install system packages run: | apk add \ + git \ unzip \ - name: Cache mongodb PHP extension build uses: actions/cache@v2 diff --git a/composer.json b/composer.json index 188d84d30b1..20be9be55ca 100644 --- a/composer.json +++ b/composer.json @@ -22,7 +22,7 @@ "symfony/http-kernel": "^4.3.7 || ^5.0", "symfony/property-access": "^3.4 || ^4.0 || ^5.0", "symfony/property-info": "^3.4 || ^4.0 || ^5.0", - "symfony/serializer": "^4.4 || ^5.0", + "symfony/serializer": "^4.4.9 || ^5.0.9", "symfony/web-link": "^4.1 || ^5.0", "willdurand/negotiation": "^2.0.3" }, diff --git a/src/Bridge/Symfony/Routing/IriConverter.php b/src/Bridge/Symfony/Routing/IriConverter.php index 1e031609f8a..e0c8e5c7211 100644 --- a/src/Bridge/Symfony/Routing/IriConverter.php +++ b/src/Bridge/Symfony/Routing/IriConverter.php @@ -18,6 +18,7 @@ use ApiPlatform\Core\Api\IriConverterInterface; use ApiPlatform\Core\Api\OperationType; use ApiPlatform\Core\Api\ResourceClassResolverInterface; +use ApiPlatform\Core\Api\UrlGeneratorInterface; use ApiPlatform\Core\DataProvider\ItemDataProviderInterface; use ApiPlatform\Core\DataProvider\OperationDataProviderTrait; use ApiPlatform\Core\DataProvider\SubresourceDataProviderInterface; @@ -200,6 +201,6 @@ private function getReferenceType(string $resourceClass, ?int $referenceType): ? $referenceType = $metadata->getAttribute('url_generation_strategy'); } - return $referenceType; + return $referenceType ?? UrlGeneratorInterface::ABS_PATH; } } diff --git a/tests/Bridge/Symfony/Routing/IriConverterTest.php b/tests/Bridge/Symfony/Routing/IriConverterTest.php index e8fe2cec17f..dbf51036f9b 100644 --- a/tests/Bridge/Symfony/Routing/IriConverterTest.php +++ b/tests/Bridge/Symfony/Routing/IriConverterTest.php @@ -144,7 +144,7 @@ public function testGetIriFromResourceClass() $routeNameResolverProphecy->getRouteName(Dummy::class, OperationType::COLLECTION)->willReturn('dummies'); $routerProphecy = $this->prophesize(RouterInterface::class); - $routerProphecy->generate('dummies', [], null)->willReturn('/dummies'); + $routerProphecy->generate('dummies', [], UrlGeneratorInterface::ABS_PATH)->willReturn('/dummies'); $converter = $this->getIriConverter($routerProphecy, $routeNameResolverProphecy); $this->assertEquals($converter->getIriFromResourceClass(Dummy::class), '/dummies'); @@ -174,7 +174,7 @@ public function testNotAbleToGenerateGetIriFromResourceClass() $routeNameResolverProphecy->getRouteName(Dummy::class, OperationType::COLLECTION)->willReturn('dummies'); $routerProphecy = $this->prophesize(RouterInterface::class); - $routerProphecy->generate('dummies', [], null)->willThrow(new RouteNotFoundException()); + $routerProphecy->generate('dummies', [], UrlGeneratorInterface::ABS_PATH)->willThrow(new RouteNotFoundException()); $converter = $this->getIriConverter($routerProphecy, $routeNameResolverProphecy); $converter->getIriFromResourceClass(Dummy::class); @@ -186,7 +186,7 @@ public function testGetSubresourceIriFromResourceClass() $routeNameResolverProphecy->getRouteName(Dummy::class, OperationType::SUBRESOURCE, Argument::type('array'))->willReturn('api_dummies_related_dummies_get_subresource'); $routerProphecy = $this->prophesize(RouterInterface::class); - $routerProphecy->generate('api_dummies_related_dummies_get_subresource', ['id' => 1], null)->willReturn('/dummies/1/related_dummies'); + $routerProphecy->generate('api_dummies_related_dummies_get_subresource', ['id' => 1], UrlGeneratorInterface::ABS_PATH)->willReturn('/dummies/1/related_dummies'); $converter = $this->getIriConverter($routerProphecy, $routeNameResolverProphecy); $this->assertEquals($converter->getSubresourceIriFromResourceClass(Dummy::class, ['subresource_identifiers' => ['id' => 1], 'subresource_resources' => [RelatedDummy::class => 1]]), '/dummies/1/related_dummies'); @@ -201,7 +201,7 @@ public function testNotAbleToGenerateGetSubresourceIriFromResourceClass() $routeNameResolverProphecy->getRouteName(Dummy::class, OperationType::SUBRESOURCE, Argument::type('array'))->willReturn('dummies'); $routerProphecy = $this->prophesize(RouterInterface::class); - $routerProphecy->generate('dummies', ['id' => 1], null)->willThrow(new RouteNotFoundException()); + $routerProphecy->generate('dummies', ['id' => 1], UrlGeneratorInterface::ABS_PATH)->willThrow(new RouteNotFoundException()); $converter = $this->getIriConverter($routerProphecy, $routeNameResolverProphecy); $converter->getSubresourceIriFromResourceClass(Dummy::class, ['subresource_identifiers' => ['id' => 1], 'subresource_resources' => [RelatedDummy::class => 1]]); @@ -213,7 +213,7 @@ public function testGetItemIriFromResourceClass() $routeNameResolverProphecy->getRouteName(Dummy::class, OperationType::ITEM)->willReturn('api_dummies_get_item'); $routerProphecy = $this->prophesize(RouterInterface::class); - $routerProphecy->generate('api_dummies_get_item', ['id' => 1], null)->willReturn('/dummies/1'); + $routerProphecy->generate('api_dummies_get_item', ['id' => 1], UrlGeneratorInterface::ABS_PATH)->willReturn('/dummies/1'); $converter = $this->getIriConverter($routerProphecy, $routeNameResolverProphecy); $this->assertEquals($converter->getItemIriFromResourceClass(Dummy::class, ['id' => 1]), '/dummies/1'); @@ -243,7 +243,7 @@ public function testNotAbleToGenerateGetItemIriFromResourceClass() $routeNameResolverProphecy->getRouteName(Dummy::class, OperationType::ITEM)->willReturn('dummies'); $routerProphecy = $this->prophesize(RouterInterface::class); - $routerProphecy->generate('dummies', ['id' => 1], null)->willThrow(new RouteNotFoundException()); + $routerProphecy->generate('dummies', ['id' => 1], UrlGeneratorInterface::ABS_PATH)->willThrow(new RouteNotFoundException()); $converter = $this->getIriConverter($routerProphecy, $routeNameResolverProphecy); $converter->getItemIriFromResourceClass(Dummy::class, ['id' => 1]);