Ver Fonte

Added a test case for typed virtual properties.

Pierre-Yves LEBECQ há 12 anos atrás
pai
commit
b199ae375a

+ 10 - 1
tests/JMS/Serializer/Tests/Fixtures/ObjectWithVirtualProperties.php

@@ -52,4 +52,13 @@ class ObjectWithVirtualProperties
     {
         return 'other-name';
     }
-}
+
+    /**
+     * @VirtualProperty
+     * @Type("integer")
+     */
+    public function getTypedVirtualProperty()
+    {
+        return '1';
+    }
+}

+ 1 - 0
tests/JMS/Serializer/Tests/Metadata/Driver/BaseDriverTest.php

@@ -78,6 +78,7 @@ abstract class BaseDriverTest extends \PHPUnit_Framework_TestCase
         $this->assertArrayHasKey('existField', $m->propertyMetadata);
         $this->assertArrayHasKey('virtualValue', $m->propertyMetadata);
         $this->assertArrayHasKey('virtualSerializedValue', $m->propertyMetadata);
+        $this->assertArrayHasKey('typedVirtualProperty', $m->propertyMetadata);
 
         $this->assertEquals($m->propertyMetadata['virtualSerializedValue']->serializedName, 'test', 'Serialized name is missing' );
 

+ 6 - 1
tests/JMS/Serializer/Tests/Metadata/Driver/php/ObjectWithVirtualProperties.php

@@ -21,4 +21,9 @@ $pMetadata->getter = 'getVirtualSerializedValue';
 $pMetadata->serializedName = 'test';
 $metadata->addPropertyMetadata($pMetadata);
 
-return $metadata;
+$pMetadata = new VirtualPropertyMetadata($className, 'typedVirtualProperty');
+$pMetadata->getter = 'getTypedVirtualProperty';
+$pMetadata->setType('integer');
+$metadata->addPropertyMetadata($pMetadata);
+
+return $metadata;

+ 2 - 1
tests/JMS/Serializer/Tests/Metadata/Driver/xml/ObjectWithVirtualProperties.xml

@@ -4,5 +4,6 @@
         <property name="existField" type="string"/>
         <virtual-property method="getVirtualValue"/>
         <virtual-property method="getVirtualSerializedValue" serialized-name="test"/>
+        <virtual-property method="getTypedVirtualProperty" type="integer" />
     </class>
-</serializer>
+</serializer>

+ 3 - 1
tests/JMS/Serializer/Tests/Metadata/Driver/yml/ObjectWithVirtualProperties.yml

@@ -5,4 +5,6 @@ JMS\Serializer\Tests\Fixtures\ObjectWithVirtualProperties:
     virtual_properties:
         getVirtualValue: ~
         getVirtualSerializedValue:
-            serialized_name: test
+            serialized_name: test
+        getTypedVirtualProperty:
+            type: integer

+ 1 - 1
tests/JMS/Serializer/Tests/Serializer/JsonSerializationTest.php

@@ -72,7 +72,7 @@ class JsonSerializationTest extends BaseSerializationTest
             $outputs['groups_foo'] = '{"foo":"foo","foobar":"foobar"}';
             $outputs['groups_foobar'] = '{"foo":"foo","foobar":"foobar","bar":"bar"}';
             $outputs['groups_default'] = '{"bar":"bar","none":"none"}';
-            $outputs['virtual_properties'] = '{"exist_field":"value","virtual_value":"value","test":"other-name"}';
+            $outputs['virtual_properties'] = '{"exist_field":"value","test":"other-name","virtual_value":"value","typed_virtual_property":1}';
             $outputs['virtual_properties_low'] = '{"low":1}';
             $outputs['virtual_properties_high'] = '{"high":8}';
             $outputs['virtual_properties_all'] = '{"low":1,"high":8}';

+ 2 - 1
tests/JMS/Serializer/Tests/Serializer/xml/virtual_properties.xml

@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <result>
   <exist_field><![CDATA[value]]></exist_field>
-  <virtual_value><![CDATA[value]]></virtual_value>
   <test><![CDATA[other-name]]></test>
+  <virtual_value><![CDATA[value]]></virtual_value>
+  <typed_virtual_property>1</typed_virtual_property>
 </result>

+ 2 - 1
tests/JMS/Serializer/Tests/Serializer/yml/virtual_properties.yml

@@ -1,3 +1,4 @@
 exist_field: value
-virtual_value: value
 test: other-name
+virtual_value: value
+typed_virtual_property: 1