diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 62d9ce3f8ea..d0094de6cc7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -319,6 +319,7 @@ jobs: - api-platform/doctrine-orm - api-platform/doctrine-odm - api-platform/metadata + - api-platform/hal - api-platform/hydra - api-platform/json-api - api-platform/json-schema diff --git a/src/GraphQl/composer.json b/src/GraphQl/composer.json index 41ec3eb4269..e31e13366ae 100644 --- a/src/GraphQl/composer.json +++ b/src/GraphQl/composer.json @@ -23,7 +23,7 @@ "php": ">=8.2", "api-platform/metadata": "^4.3", "api-platform/state": "^4.3", - "api-platform/serializer": "^4.3.7", + "api-platform/serializer": "^4.3.8", "symfony/property-info": "^7.1 || ^8.0", "symfony/serializer": "^6.4 || ^7.1 || ^8.0", "symfony/type-info": "^7.3 || ^8.0", diff --git a/src/Hal/Tests/Fixtures/Dummy.php b/src/Hal/Tests/Fixtures/Dummy.php index 67569cb2851..0bdcb668167 100644 --- a/src/Hal/Tests/Fixtures/Dummy.php +++ b/src/Hal/Tests/Fixtures/Dummy.php @@ -16,8 +16,15 @@ class Dummy { public int $id; - private RelatedDummy $relatedDummy; + public ?RelatedDummy $relatedDummy = null; private string $name; + private ?string $alias = null; + private ?string $description = null; + + public function setId(int $id): void + { + $this->id = $id; + } public function getName(): string { @@ -29,12 +36,32 @@ public function setName(string $name): void $this->name = $name; } - public function getRelatedDummy(): RelatedDummy + public function getAlias(): ?string + { + return $this->alias; + } + + public function setAlias(?string $alias): void + { + $this->alias = $alias; + } + + public function getDescription(): ?string + { + return $this->description; + } + + public function setDescription(?string $description): void + { + $this->description = $description; + } + + public function getRelatedDummy(): ?RelatedDummy { return $this->relatedDummy; } - public function setRelatedDummy(RelatedDummy $relatedDummy): void + public function setRelatedDummy(?RelatedDummy $relatedDummy): void { $this->relatedDummy = $relatedDummy; } diff --git a/src/Hal/Tests/Fixtures/MaxDepthDummy.php b/src/Hal/Tests/Fixtures/MaxDepthDummy.php index a9240017d23..ab2f526aff0 100644 --- a/src/Hal/Tests/Fixtures/MaxDepthDummy.php +++ b/src/Hal/Tests/Fixtures/MaxDepthDummy.php @@ -33,5 +33,5 @@ class MaxDepthDummy #[ApiProperty(fetchEager: false)] #[Groups(['default'])] #[MaxDepth(1)] - public MaxDepthDummy $child; + public ?MaxDepthDummy $child = null; } diff --git a/src/Hal/Tests/JsonSchema/SchemaFactoryTest.php b/src/Hal/Tests/JsonSchema/SchemaFactoryTest.php index 43a3a4a51a2..fc16bc2e886 100644 --- a/src/Hal/Tests/JsonSchema/SchemaFactoryTest.php +++ b/src/Hal/Tests/JsonSchema/SchemaFactoryTest.php @@ -62,7 +62,7 @@ protected function setUp(): void definitionNameFactory: $definitionNameFactory, ); - $this->schemaFactory = new SchemaFactory($baseSchemaFactory); + $this->schemaFactory = new SchemaFactory($baseSchemaFactory, $definitionNameFactory, $resourceMetadataFactory); } public function testBuildSchema(): void diff --git a/src/Hal/Tests/Serializer/ItemNormalizerTest.php b/src/Hal/Tests/Serializer/ItemNormalizerTest.php index f45d91623b6..e3860cedcea 100644 --- a/src/Hal/Tests/Serializer/ItemNormalizerTest.php +++ b/src/Hal/Tests/Serializer/ItemNormalizerTest.php @@ -14,20 +14,20 @@ namespace ApiPlatform\Hal\Tests\Serializer; use ApiPlatform\Hal\Serializer\ItemNormalizer; +use ApiPlatform\Hal\Tests\Fixtures\ApiResource\Issue5452\ActivableInterface; +use ApiPlatform\Hal\Tests\Fixtures\ApiResource\Issue5452\Author; +use ApiPlatform\Hal\Tests\Fixtures\ApiResource\Issue5452\Book; +use ApiPlatform\Hal\Tests\Fixtures\ApiResource\Issue5452\Library; +use ApiPlatform\Hal\Tests\Fixtures\ApiResource\Issue5452\TimestampableInterface; +use ApiPlatform\Hal\Tests\Fixtures\Dummy; +use ApiPlatform\Hal\Tests\Fixtures\MaxDepthDummy; +use ApiPlatform\Hal\Tests\Fixtures\RelatedDummy; use ApiPlatform\Metadata\ApiProperty; use ApiPlatform\Metadata\IriConverterInterface; use ApiPlatform\Metadata\Property\Factory\PropertyMetadataFactoryInterface; use ApiPlatform\Metadata\Property\Factory\PropertyNameCollectionFactoryInterface; use ApiPlatform\Metadata\Property\PropertyNameCollection; use ApiPlatform\Metadata\ResourceClassResolverInterface; -use ApiPlatform\Tests\Fixtures\TestBundle\ApiResource\Issue5452\ActivableInterface; -use ApiPlatform\Tests\Fixtures\TestBundle\ApiResource\Issue5452\Author; -use ApiPlatform\Tests\Fixtures\TestBundle\ApiResource\Issue5452\Book; -use ApiPlatform\Tests\Fixtures\TestBundle\ApiResource\Issue5452\Library; -use ApiPlatform\Tests\Fixtures\TestBundle\ApiResource\Issue5452\TimestampableInterface; -use ApiPlatform\Tests\Fixtures\TestBundle\Entity\Dummy; -use ApiPlatform\Tests\Fixtures\TestBundle\Entity\MaxDepthDummy; -use ApiPlatform\Tests\Fixtures\TestBundle\Entity\RelatedDummy; use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\Attributes\Group; use PHPUnit\Framework\TestCase; @@ -104,7 +104,7 @@ public function testSupportsNormalization(): void $this->assertFalse($normalizer->supportsNormalization($dummy, 'xml')); $this->assertFalse($normalizer->supportsNormalization($std, $normalizer::FORMAT)); $this->assertEmpty($normalizer->getSupportedTypes('xml')); - $this->assertSame(['object' => true], $normalizer->getSupportedTypes($normalizer::FORMAT)); + $this->assertSame(['object' => false], $normalizer->getSupportedTypes($normalizer::FORMAT)); } public function testNormalize(): void diff --git a/src/Hal/composer.json b/src/Hal/composer.json index 3a7015ff2c1..07389f44c99 100644 --- a/src/Hal/composer.json +++ b/src/Hal/composer.json @@ -25,7 +25,7 @@ "api-platform/state": "^4.3", "api-platform/metadata": "^4.3", "api-platform/documentation": "^4.3", - "api-platform/serializer": "^4.3.7", + "api-platform/serializer": "^4.3.8", "symfony/type-info": "^7.3 || ^8.0" }, "autoload": { @@ -65,8 +65,9 @@ "test": "./vendor/bin/phpunit" }, "require-dev": { - "phpunit/phpunit": "^11.5 || ^12.2", - "api-platform/json-schema": "^4.3" + "api-platform/json-schema": "^4.3", + "phpspec/prophecy-phpunit": "^2.2", + "phpunit/phpunit": "^11.5 || ^12.2" }, "minimum-stability": "beta", "prefer-stable": true diff --git a/src/JsonApi/composer.json b/src/JsonApi/composer.json index 0b6c7b34196..c638ec1bf60 100644 --- a/src/JsonApi/composer.json +++ b/src/JsonApi/composer.json @@ -25,7 +25,7 @@ "api-platform/documentation": "^4.3", "api-platform/json-schema": "^4.3", "api-platform/metadata": "^4.3", - "api-platform/serializer": "^4.3.7", + "api-platform/serializer": "^4.3.8", "api-platform/state": "^4.3", "symfony/error-handler": "^6.4 || ^7.0 || ^8.0", "symfony/http-foundation": "^6.4.14 || ^7.0 || ^8.0",