Skip to content

Commit 8020d27

Browse files
committed
Fix custom serializer methods are added multiple times for MultiType Properties
1 parent 3e3992f commit 8020d27

File tree

4 files changed

+8
-2
lines changed

4 files changed

+8
-2
lines changed

src/Model/Schema.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -196,13 +196,14 @@ public function getUsedClasses(array $visitedSchema = []): array
196196
}
197197

198198
/**
199+
* @param string $property
199200
* @param TransformingFilterSerializer $serializer
200201
*
201202
* @return $this
202203
*/
203-
public function addCustomSerializer(TransformingFilterSerializer $serializer): self
204+
public function addCustomSerializer(string $property, TransformingFilterSerializer $serializer): self
204205
{
205-
$this->customSerializer[] = $serializer;
206+
$this->customSerializer[$property] = $serializer;
206207

207208
return $this;
208209
}

src/PropertyProcessor/Filter/FilterProcessor.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@ public function process(
100100
$schema
101101
->addUsedClass($typeAfterFilter->getName())
102102
->addCustomSerializer(
103+
$property->getAttribute(),
103104
new TransformingFilterSerializer($property->getAttribute(), $filter, $filterOptions)
104105
);
105106
}

tests/Basic/ErrorCollectionTest.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ public function validValuesForSinglePropertyDataProvider(): array
3737
'special chars' => ['+.'],
3838
];
3939
}
40+
4041
/**
4142
* @dataProvider invalidValuesForSinglePropertyDataProvider
4243
*

tests/Basic/FilterTest.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -650,6 +650,7 @@ public function testFilterChainWithTransformingFilterOnMultiTypeProperty(bool $i
650650
'FilterChainMultiType.json',
651651
(new GeneratorConfiguration())
652652
->setImplicitNull($implicitNull)
653+
->setSerialization(true)
653654
->addFilter(
654655
$this->getCustomFilter(
655656
[self::class, 'stripTimeFilter'],
@@ -670,6 +671,8 @@ public function testFilterChainWithTransformingFilterOnMultiTypeProperty(bool $i
670671

671672
$object->setFilteredProperty(new DateTime('2020-12-12 12:12:12'));
672673
$this->assertSame('2020-12-12T00:00:00+00:00', $object->getFilteredProperty()->format(DateTime::ATOM));
674+
675+
$this->assertSame(['filteredProperty' => '2020-12-12T00:00:00+0000'], $object->toArray());
673676
}
674677

675678
public function testFilterWhichAppliesToMultiTypePropertyPartiallyThrowsAnException(): void

0 commit comments

Comments
 (0)