@@ -400,15 +400,49 @@ public function testDeserializeAndSerializeInterfacedObjectsWithTheClassMetadata
400
400
401
401
$ jsonData = '{"message-type":"one","one":1} ' ;
402
402
403
- $ loaderMock = $ this ->getMockBuilder (ClassMetadataFactoryInterface::class)->getMock ();
404
- $ loaderMock ->method ('hasMetadataFor ' )->will ($ this ->returnValueMap (array (
403
+ $ discriminatorResolver = new ClassDiscriminatorFromClassMetadata ($ this ->metadataFactoryMockForDummyInterface ());
404
+ $ serializer = new Serializer (array (new ObjectNormalizer (null , null , null , null , $ discriminatorResolver )), array ('json ' => new JsonEncoder ()));
405
+
406
+ $ deserialized = $ serializer ->deserialize ($ jsonData , DummyMessageInterface::class, 'json ' );
407
+ $ this ->assertEquals ($ example , $ deserialized );
408
+
409
+ $ serialized = $ serializer ->serialize ($ deserialized , 'json ' );
410
+ $ this ->assertEquals ($ jsonData , $ serialized );
411
+ }
412
+
413
+ /**
414
+ * @expectedException \Symfony\Component\Serializer\Exception\RuntimeException
415
+ * @expectedExceptionMessage The type "second" has no mapped class for the abstract object "Symfony\Component\Serializer\Tests\Fixtures\DummyMessageInterface"
416
+ */
417
+ public function testExceptionWhenTypeIsNotKnownInDiscriminator ()
418
+ {
419
+ $ discriminatorResolver = new ClassDiscriminatorFromClassMetadata ($ this ->metadataFactoryMockForDummyInterface ());
420
+ $ serializer = new Serializer (array (new ObjectNormalizer (null , null , null , null , $ discriminatorResolver )), array ('json ' => new JsonEncoder ()));
421
+ $ serializer ->deserialize ('{"message-type":"second","one":1} ' , DummyMessageInterface::class, 'json ' );
422
+ }
423
+
424
+ /**
425
+ * @expectedException \Symfony\Component\Serializer\Exception\RuntimeException
426
+ * @expectedExceptionMessage Type property "message-type" not found for the abstract object "Symfony\Component\Serializer\Tests\Fixtures\DummyMessageInterface"
427
+ */
428
+ public function testExceptionWhenTypeIsNotInTheBodyToDeserialiaze ()
429
+ {
430
+ $ discriminatorResolver = new ClassDiscriminatorFromClassMetadata ($ this ->metadataFactoryMockForDummyInterface ());
431
+ $ serializer = new Serializer (array (new ObjectNormalizer (null , null , null , null , $ discriminatorResolver )), array ('json ' => new JsonEncoder ()));
432
+ $ serializer ->deserialize ('{"one":1} ' , DummyMessageInterface::class, 'json ' );
433
+ }
434
+
435
+ private function metadataFactoryMockForDummyInterface ()
436
+ {
437
+ $ factoryMock = $ this ->getMockBuilder (ClassMetadataFactoryInterface::class)->getMock ();
438
+ $ factoryMock ->method ('hasMetadataFor ' )->will ($ this ->returnValueMap (array (
405
439
array (
406
440
DummyMessageInterface::class,
407
441
true ,
408
442
),
409
443
)));
410
444
411
- $ loaderMock ->method ('getMetadataFor ' )->will ($ this ->returnValueMap (array (
445
+ $ factoryMock ->method ('getMetadataFor ' )->will ($ this ->returnValueMap (array (
412
446
array (
413
447
DummyMessageInterface::class,
414
448
new ClassMetadata (
@@ -420,14 +454,7 @@ public function testDeserializeAndSerializeInterfacedObjectsWithTheClassMetadata
420
454
),
421
455
)));
422
456
423
- $ discriminatorResolver = new ClassDiscriminatorFromClassMetadata ($ loaderMock );
424
- $ serializer = new Serializer (array (new ObjectNormalizer (null , null , null , null , $ discriminatorResolver )), array ('json ' => new JsonEncoder ()));
425
-
426
- $ deserialized = $ serializer ->deserialize ($ jsonData , DummyMessageInterface::class, 'json ' );
427
- $ this ->assertEquals ($ example , $ deserialized );
428
-
429
- $ serialized = $ serializer ->serialize ($ deserialized , 'json ' );
430
- $ this ->assertEquals ($ jsonData , $ serialized );
457
+ return $ factoryMock ;
431
458
}
432
459
}
433
460
0 commit comments