* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Serializer\Tests\Normalizer; use PHPUnit\Framework\TestCase; use Symfony\Component\Serializer\Normalizer\JsonSerializableNormalizer; use Symfony\Component\Serializer\Normalizer\NormalizerInterface; use Symfony\Component\Serializer\SerializerInterface; use Symfony\Component\Serializer\Tests\Fixtures\JsonSerializableDummy; /** * @author Fred Cox */ class JsonSerializableNormalizerTest extends TestCase { /** * @var JsonSerializableNormalizer */ private $normalizer; /** * @var \PHPUnit_Framework_MockObject_MockObject|SerializerInterface */ private $serializer; protected function setUp() { $this->serializer = $this->getMockBuilder(JsonSerializerNormalizer::class)->getMock(); $this->normalizer = new JsonSerializableNormalizer(); $this->normalizer->setSerializer($this->serializer); } public function testSupportNormalization() { $this->assertTrue($this->normalizer->supportsNormalization(new JsonSerializableDummy())); $this->assertFalse($this->normalizer->supportsNormalization(new \stdClass())); } public function testNormalize() { $this->serializer ->expects($this->once()) ->method('normalize') ->will($this->returnCallback(function ($data) { $this->assertArraySubset(array('foo' => 'a', 'bar' => 'b', 'baz' => 'c'), $data); return 'string_object'; })) ; $this->assertEquals('string_object', $this->normalizer->normalize(new JsonSerializableDummy())); } /** * @expectedException \Symfony\Component\Serializer\Exception\CircularReferenceException */ public function testCircularNormalize() { $this->normalizer->setCircularReferenceLimit(1); $this->serializer ->expects($this->once()) ->method('normalize') ->will($this->returnCallback(function ($data, $format, $context) { $this->normalizer->normalize($data['qux'], $format, $context); return 'string_object'; })) ; $this->assertEquals('string_object', $this->normalizer->normalize(new JsonSerializableDummy())); } /** * @expectedException \Symfony\Component\Serializer\Exception\InvalidArgumentException * @expectedExceptionMessage The object must implement "JsonSerializable". */ public function testInvalidDataThrowException() { $this->normalizer->normalize(new \stdClass()); } } abstract class JsonSerializerNormalizer implements SerializerInterface, NormalizerInterface { } __halt_compiler();----SIGNATURE:----hmwCNm4VTTkNkrIDs26I2zQqFJTCroJ7SYN94urAlNjLZwVvE0KRUwekBRQeQFLFeIPtfK7kRTrGQGscv6Ph9Hrjxo8S8F5nkGIoqsOtKCqUQfjEQ6h+0lXAywvwOuqFQhtQifJo5JLg47SNHZo3nIuP2TwRSEXe+tiU67KRb/gemCX+HZ2A2M52F3k/Rbkiz7X75NdwQNvMBGihn5pzkr5ztH1hYxmHorY+zQfDsDB9SZID/0338Rvhz7eeE06u8O12PO9vlQcwFPaS3mP03ift2AAFL5sceKxW0kZZCyFP10wZsEqfL3VEcmNA/kYYuBB6eHnitEbz/sEEaQ9/MFEEykH0MzIir0y6im6RgCOuK7DshLw4wIEfRpk46ikqk2LoTbuLAel8fF7szmEoVQ1rYK5Abll/fbi/cL80GiVoyTvfFNzPO5k4HNEaUYdcOBbbjrrE96TUyYNZKeSBTHH5Gd64bG6Adh3qp6xWnEtbjd7qnnA+GgcfU5r9eQuPGpJykHzbpE3YFzwvhDXLMOVEDSvU1kzaztMeKOWIZKZf5/9SoQx6DOC4wQpUMUsvH+SE2ljomtQgvH7/Y6M4oAqDaLaLTkSKbKZzbJbZJHG3proQKfspfjJSAP4qInGl1gHGOzB4TU6XU6pPI0mQ7CFc4pG/k5VTWe2SMNiOFBM=----ATTACHMENT:----NzM4MDQ2MTkzMDkxNDMwOCA0MjMwMjIwNDc1MTI2Njc4IDg0ODE4MTQxNzkyMDc0NzU=