Pārlūkot izejas kodu

fix lazy loader setSerializeNull

mattw 12 gadi atpakaļ
vecāks
revīzija
03f937a2a6
2 mainītis faili ar 47 papildinājumiem un 2 dzēšanām
  1. 2 2
      Serializer/Serializer.php
  2. 45 0
      Tests/Serializer/LazyLoaderTest.php

+ 2 - 2
Serializer/Serializer.php

@@ -54,8 +54,8 @@ class Serializer implements SerializerInterface
 
     public function setSerializeNull($serializeNull)
     {
-        foreach ($this->serializationVisitors as $visitor) {
-            $visitor->setSerializeNull($serializeNull);
+        foreach (array_keys($this->serializationVisitors) as $format) {
+            $this->getSerializationVisitor($format)->setSerializeNull($serializeNull);
         }
     }
 

+ 45 - 0
Tests/Serializer/LazyLoaderTest.php

@@ -0,0 +1,45 @@
+<?php
+
+namespace JMS\SerializerBundle\Tests\Serializer;
+
+use JMS\SerializerBundle\Serializer\Handler\HandlerRegistry;
+use Doctrine\Common\Annotations\AnnotationReader;
+use JMS\SerializerBundle\Metadata\Driver\AnnotationDriver;
+use JMS\SerializerBundle\Serializer\LazyLoadingSerializer;
+use JMS\SerializerBundle\Serializer\Construction\UnserializeObjectConstructor;
+use Metadata\MetadataFactory;
+use Symfony\Component\DependencyInjection\ContainerBuilder;
+use JMS\SerializerBundle\DependencyInjection\JMSSerializerExtension;
+
+class LazyLoaderTest extends \PHPUnit_Framework_TestCase
+{
+    protected $serializer;
+
+    protected function setUp()
+    {
+        $this->serializer = new LazyLoadingSerializer(
+            new MetadataFactory(new AnnotationDriver(new AnnotationReader())),
+            new HandlerRegistry(),
+            new UnserializeObjectConstructor(),
+            null,
+            null,
+            array('json' => 'jms_serializer.json_serialization_visitor')
+        );
+
+        $container = new ContainerBuilder();
+        $container->setParameter('kernel.debug', true);
+        $container->setParameter('kernel.cache_dir', sys_get_temp_dir().'/serializer');
+        $container->setParameter('kernel.bundles', array());
+        $extension = new JMSSerializerExtension();
+        $extension->load(array(array()), $container);
+
+        $this->serializer->setContainer($container);
+    }
+
+    public function testSetSerializeNull()
+    {
+        $this->serializer->setSerializeNull(true);
+        $this->assertEquals('{"foo":"bar","baz":null}', $this->serializer->serialize(array('foo' => 'bar', 'baz' => null), 'json'));
+
+    }
+}