Skip to content

Commit 693b321

Browse files
committed
Improve test, ensure transformer is always called if output class is set no matter how the same class/object is returned
1 parent 0bb0bb5 commit 693b321

File tree

4 files changed

+7
-6
lines changed

4 files changed

+7
-6
lines changed

features/jsonld/input_output.feature

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ Feature: JSON-LD DTO input and output
9797
"@id": "/dummy_dto_output_same_classes/1",
9898
"@type": "DummyDtoOutputSameClass",
9999
"lorem": "test",
100-
"ipsum": "1",
100+
"ipsum": "modified",
101101
"id": 1
102102
}
103103
"""

src/JsonLd/Serializer/ItemNormalizer.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,6 @@ public function normalize($object, $format = null, array $context = [])
6767
{
6868
$objectClass = $this->getObjectClass($object);
6969
$outputClass = $this->getOutputClass($objectClass, $context);
70-
7170
if (null !== $outputClass && !isset($context[self::IS_TRANSFORMED_TO_SAME_CLASS_CONTEXT_KEY])) {
7271
return parent::normalize($object, $format, $context);
7372
}

tests/Fixtures/TestBundle/DataTransformer/OutputDtoFallbackSameClassTransformer.php renamed to tests/Fixtures/TestBundle/DataTransformer/OutputDtoSameClassTransformer.php

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,20 +16,21 @@
1616
use ApiPlatform\Core\DataTransformer\DataTransformerInterface;
1717
use ApiPlatform\Core\Tests\Fixtures\TestBundle\Dto\OutputDtoDummy;
1818
use ApiPlatform\Core\Tests\Fixtures\TestBundle\Entity\DummyDtoOutputFallbackToSameClass;
19+
use ApiPlatform\Core\Tests\Fixtures\TestBundle\Entity\DummyDtoOutputSameClass;
1920

2021
/**
2122
* OutputDtoUnmodifiedDataTransformer.
2223
*
2324
* @author Daniel West <[email protected]>
2425
*/
25-
final class OutputDtoFallbackSameClassTransformer implements DataTransformerInterface
26+
final class OutputDtoSameClassTransformer implements DataTransformerInterface
2627
{
2728
/**
2829
* {@inheritdoc}
2930
*/
3031
public function transform($object, string $to, array $context = [])
3132
{
32-
if (!$object instanceof DummyDtoOutputFallbackToSameClass) {
33+
if (!$object instanceof DummyDtoOutputFallbackToSameClass && !$object instanceof DummyDtoOutputSameClass) {
3334
throw new \InvalidArgumentException();
3435
}
3536
$object->ipsum = 'modified';
@@ -42,6 +43,7 @@ public function transform($object, string $to, array $context = [])
4243
*/
4344
public function supportsTransformation($data, string $to, array $context = []): bool
4445
{
45-
return $data instanceof DummyDtoOutputFallbackToSameClass && OutputDtoDummy::class === $to;
46+
return ($data instanceof DummyDtoOutputFallbackToSameClass && OutputDtoDummy::class === $to) ||
47+
($data instanceof DummyDtoOutputSameClass && DummyDtoOutputSameClass::class === $to);
4648
}
4749
}

tests/Fixtures/app/config/config_common.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,7 @@ services:
227227
- { name: 'api_platform.data_transformer' }
228228

229229
app.data_transformer.custom_output_dto_fallback_same_class:
230-
class: 'ApiPlatform\Core\Tests\Fixtures\TestBundle\DataTransformer\OutputDtoFallbackSameClassTransformer'
230+
class: 'ApiPlatform\Core\Tests\Fixtures\TestBundle\DataTransformer\OutputDtoSameClassTransformer'
231231
public: false
232232
tags:
233233
- { name: 'api_platform.data_transformer' }

0 commit comments

Comments
 (0)