소스 검색

exclusion-policy in xml and yml drivers is now case insensitive.
the same goes for boolean properties in xml driver

Miha Vrhovnik 13 년 전
부모
커밋
2175b4e0e1

+ 4 - 4
Metadata/Driver/XmlDriver.php

@@ -46,8 +46,8 @@ class XmlDriver extends AbstractFileDriver
 
         $metadata->fileResources[] = $path;
         $metadata->fileResources[] = $class->getFileName();
-        $exclusionPolicy = $elem->attributes()->{'exclusion-policy'} ?: 'NONE';
-        $excludeAll = null !== ($exclude = $elem->attributes()->exclude) ? 'true' === (string) $exclude : false;
+        $exclusionPolicy = strtoupper($elem->attributes()->{'exclusion-policy'}) ?: 'NONE';
+        $excludeAll = null !== ($exclude = $elem->attributes()->exclude) ? 'true' === strtolower($exclude) : false;
         $classAccessType = (string) ($elem->attributes()->{'access-type'} ?: PropertyMetadata::ACCESS_TYPE_PROPERTY);
 
         if (null !== $accessorOrder = $elem->attributes()->{'accessor-order'}) {
@@ -73,11 +73,11 @@ class XmlDriver extends AbstractFileDriver
                     $pElem = reset($pElems);
 
                     if (null !== $exclude = $pElem->attributes()->exclude) {
-                        $isExclude = 'true' === (string) $exclude;
+                        $isExclude = 'true' === strtolower($exclude);
                     }
 
                     if (null !== $expose = $pElem->attributes()->expose) {
-                        $isExpose = 'true' === (string) $expose;
+                        $isExpose = 'true' === strtolower($expose);
                     }
 
                     if (null !== $version = $pElem->attributes()->{'since-version'}) {

+ 1 - 1
Metadata/Driver/YamlDriver.php

@@ -40,7 +40,7 @@ class YamlDriver extends AbstractFileDriver
         $metadata = new ClassMetadata($name);
         $metadata->fileResources[] = $file;
         $metadata->fileResources[] = $class->getFileName();
-        $exclusionPolicy = isset($config['exclusion_policy']) ? $config['exclusion_policy'] : 'NONE';
+        $exclusionPolicy = isset($config['exclusion_policy']) ? strtoupper($config['exclusion_policy']) : 'NONE';
         $excludeAll = isset($config['exclude']) ? (Boolean) $config['exclude'] : false;
         $classAccessType = isset($config['access_type']) ? $config['access_type'] : PropertyMetadata::ACCESS_TYPE_PROPERTY;
 

+ 9 - 0
Tests/Metadata/Driver/XmlDriverTest.php

@@ -61,6 +61,15 @@ class XmlDriverTest extends BaseDriverTest
         }
     }
 
+    public function testBlogPostCaseInsensitive()
+    {
+        $m = $this->getDriver('case')->loadMetadataForClass(new \ReflectionClass('JMS\SerializerBundle\Tests\Fixtures\BlogPost'));
+
+        $p = new PropertyMetadata($m->name, 'title');
+        $p->type = 'string';
+        $this->assertEquals($p, $m->propertyMetadata['title']);
+    }
+
     protected function getDriver()
     {
         $append = '';

+ 10 - 0
Tests/Metadata/Driver/YamlDriverTest.php

@@ -19,6 +19,7 @@
 namespace JMS\SerializerBundle\Tests\Metadata\Driver;
 
 use Metadata\Driver\FileLocator;
+use JMS\SerializerBundle\Metadata\PropertyMetadata;
 use JMS\SerializerBundle\Metadata\Driver\YamlDriver;
 
 class YamlDriverTest extends BaseDriverTest
@@ -47,6 +48,15 @@ class YamlDriverTest extends BaseDriverTest
         }
     }
 
+    public function testBlogPostCaseInsensitive()
+    {
+        $m = $this->getDriver('case')->loadMetadataForClass(new \ReflectionClass('JMS\SerializerBundle\Tests\Fixtures\BlogPost'));
+
+        $p = new PropertyMetadata($m->name, 'title');
+        $p->type = 'string';
+        $this->assertEquals($p, $m->propertyMetadata['title']);
+    }
+
     protected function getDriver()
     {
         $append = '';

+ 6 - 0
Tests/Metadata/Driver/xml/case/BlogPost.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<serializer>
+    <class name="JMS\SerializerBundle\Tests\Fixtures\BlogPost" xml-root-name="blog-post" exclusion-policy="all">
+        <property name="title" type="string" expose="TRUE" />
+    </class>
+</serializer>

+ 7 - 0
Tests/Metadata/Driver/yml/case/BlogPost.yml

@@ -0,0 +1,7 @@
+JMS\SerializerBundle\Tests\Fixtures\BlogPost:
+    xml_root_name: blog-post
+    exclusion_policy: all
+    properties:
+        title:
+            type: string
+            expose: TRUE