|
45 | 45 | use Symfony\Component\Serializer\Normalizer\DateTimeNormalizer; |
46 | 46 | use Symfony\Component\Serializer\Normalizer\DenormalizerInterface; |
47 | 47 | use Symfony\Component\Serializer\Normalizer\ObjectNormalizer; |
| 48 | +use Symfony\Component\Serializer\Normalizer\PropertyNormalizer; |
48 | 49 | use Symfony\Component\Serializer\Serializer; |
49 | 50 | use Symfony\Component\Serializer\SerializerAwareInterface; |
50 | 51 | use Symfony\Component\Serializer\SerializerInterface; |
51 | 52 | use Symfony\Component\Serializer\Tests\Fixtures\Attributes\AbstractDummy; |
52 | 53 | use Symfony\Component\Serializer\Tests\Fixtures\Attributes\AbstractDummyFirstChild; |
53 | 54 | use Symfony\Component\Serializer\Tests\Fixtures\Attributes\AbstractDummySecondChild; |
54 | 55 | use Symfony\Component\Serializer\Tests\Fixtures\DummyFirstChildQuux; |
| 56 | +use Symfony\Component\Serializer\Tests\Fixtures\DummyMessageInterface; |
| 57 | +use Symfony\Component\Serializer\Tests\Fixtures\DummyMessageNumberFour; |
55 | 58 | use Symfony\Component\Serializer\Tests\Fixtures\DummySecondChildQuux; |
56 | 59 | use Symfony\Component\Serializer\Tests\Fixtures\DummyString; |
57 | 60 | use Symfony\Component\Serializer\Tests\Fixtures\DummyWithNotNormalizable; |
@@ -1200,6 +1203,25 @@ public static function provideBooleanTypesData() |
1200 | 1203 | ]; |
1201 | 1204 | } |
1202 | 1205 |
|
| 1206 | + public function testDeserializeAndSerializeConstructorAndIgnoreAndInterfacedObjectsWithTheClassMetadataDiscriminator() |
| 1207 | + { |
| 1208 | + $example = new DummyMessageNumberFour('Hello'); |
| 1209 | + |
| 1210 | + $classMetadataFactory = new ClassMetadataFactory(new AttributeLoader()); |
| 1211 | + |
| 1212 | + $normalizer = new PropertyNormalizer( |
| 1213 | + $classMetadataFactory, |
| 1214 | + null, |
| 1215 | + new PropertyInfoExtractor([], [new PhpDocExtractor(), new ReflectionExtractor()]), |
| 1216 | + new ClassDiscriminatorFromClassMetadata($classMetadataFactory), |
| 1217 | + ); |
| 1218 | + |
| 1219 | + $serialized = $normalizer->normalize($example, 'json'); |
| 1220 | + $deserialized = $normalizer->denormalize($serialized, DummyMessageInterface::class, 'json'); |
| 1221 | + |
| 1222 | + $this->assertEquals($example, $deserialized); |
| 1223 | + } |
| 1224 | + |
1203 | 1225 | /** |
1204 | 1226 | * @dataProvider provideDenormalizeWithFilterBoolData |
1205 | 1227 | */ |
|
0 commit comments