Ver Fonte

Fixed mapped tests for YML and XML mappind drivers

Dinoweb há 14 anos atrás
pai
commit
50ea8a7813

+ 1 - 12
lib/Gedmo/Sluggable/Mapping/Driver/Xml.php

@@ -65,17 +65,7 @@ class Xml extends BaseXml
                     if (!$this->isValidField($meta, $field)) {
                         throw new InvalidMappingException("Cannot slug field - [{$field}] type is not valid and must be 'string' in class - {$meta->name}");
                     }
-<<<<<<< HEAD
-                    $options = array('position'=>false, 'field'=>$field, 'slugField'=>'slug');
-                    if ($this->_isAttributeSet($mapping->sluggable, 'position')) {
-                        $options['position'] =  (int)$this->_getAttribute($mapping->sluggable, 'position');
-                    }
-                    
-                    if ($this->_isAttributeSet($mapping->sluggable, 'slugField')) {
-                        $options['slugField'] =  $this->_getAttribute($mapping->sluggable, 'slugField');
-                    }
-                    
-=======
+
                     $options = array('position' => false, 'field' => $field, 'slugField' => 'slug');
                     if ($this->_isAttributeSet($mapping->sluggable, 'position')) {
                         $options['position'] =  (int)$this->_getAttribute($mapping->sluggable, 'position');
@@ -85,7 +75,6 @@ class Xml extends BaseXml
                         $options['slugField'] =  $this->_getAttribute($mapping->sluggable, 'slugField');
                     }
 
->>>>>>> multiple_slugs_1
                     $config['fields'][$options['slugField']][] = $options;
                 } elseif (isset($mapping->slug)) {
                     /**

+ 3 - 3
lib/Gedmo/Sluggable/Mapping/Driver/Yaml.php

@@ -58,12 +58,12 @@ class Yaml extends File implements Driver
             foreach ($mapping['fields'] as $field => $fieldMapping) {
                 if (isset($fieldMapping['gedmo'])) {
 
-                    if (in_array('sluggable', $fieldMapping['gedmo'])) {
+                    if (isset($fieldMapping['gedmo']['sluggable']) || in_array('sluggable', $fieldMapping['gedmo'])) {
                         if (!$this->isValidField($meta, $field)) {
                             throw new InvalidMappingException("Cannot slug field - [{$field}] type is not valid and must be 'string' in class - {$meta->name}");
                         }
-                        $sluggable = $fieldMapping['gedmo'][array_search('sluggable', $fieldMapping['gedmo'])];
-                        $slugField = isset($sluggable['slugField'])? $sluggable['slugField']:'slug';
+                        $sluggable = $fieldMapping['gedmo']['sluggable'];
+                        $slugField = (isset($sluggable['slugField'])? $sluggable['slugField']:'slug');
                         $config['fields'][$slugField][] = array('field' => $field, 'position' => $sluggable['position'], 'slugField' => $slugField);
                     } elseif (isset($fieldMapping['gedmo']['slug']) || in_array('slug', $fieldMapping['gedmo'])) {
                         $slug = $fieldMapping['gedmo']['slug'];

+ 3 - 1
tests/Gedmo/Mapping/Driver/Yaml/Mapping.Fixture.Yaml.Category.dcm.yml

@@ -21,7 +21,9 @@ Mapping\Fixture\Yaml\Category:
       length: 64
       gedmo:
         - translatable
-        - sluggable
+        sluggable:
+          position: 1
+          fieldSlug: 'slug'
     slug:
       type: string
       length: 64

+ 15 - 12
tests/Gedmo/Mapping/SluggableMappingTest.php

@@ -61,18 +61,21 @@ class SluggableMappingTest extends \PHPUnit_Framework_TestCase
             'Gedmo\Sluggable'
         );
         $config = $this->em->getMetadataFactory()->getCacheDriver()->fetch($cacheId);
-        $this->assertArrayHasKey('slug', $config);
-        $this->assertEquals('slug', $config['slug']);
+        $this->assertArrayHasKey('slugFields', $config);
+        $this->assertEquals('slug', $config['slugFields']['slug']['slug']);
         $this->assertArrayHasKey('fields', $config);
-        $this->assertEquals(1, count($config['fields']));
-        $this->assertEquals('title', $config['fields'][0]['field']);
-        $this->assertArrayHasKey('style', $config);
-        $this->assertEquals('camel', $config['style']);
-        $this->assertArrayHasKey('separator', $config);
-        $this->assertEquals('_', $config['separator']);
-        $this->assertArrayHasKey('unique', $config);
-        $this->assertTrue($config['unique']);
-        $this->assertArrayHasKey('updatable', $config);
-        $this->assertTrue($config['updatable']);
+        $this->assertEquals(1, count($config['fields']['slug']));
+        $this->assertEquals('title', $config['fields']['slug'][0]['field']);
+        $this->assertEquals('slug', $config['fields']['slug'][0]['slugField']);
+        $this->assertEquals(1, $config['fields']['slug'][0]['position']);
+        $this->assertArrayHasKey('style', $config['slugFields']['slug']);
+        $this->assertEquals('camel', $config['slugFields']['slug']['style']);
+        $this->assertArrayHasKey('separator', $config['slugFields']['slug']);
+        $this->assertEquals('_', $config['slugFields']['slug']['separator']);
+        $this->assertArrayHasKey('unique', $config['slugFields']['slug']);
+        $this->assertTrue($config['slugFields']['slug']['unique']);
+        $this->assertArrayHasKey('updatable', $config['slugFields']['slug']);
+        $this->assertTrue($config['slugFields']['slug']['updatable']);
+        
     }
 }

+ 17 - 17
tests/Gedmo/Mapping/Xml/SluggableMappingTest.php

@@ -51,26 +51,26 @@ class SluggableMappingTest extends BaseTestCaseOM
         $meta = $this->em->getClassMetadata('Mapping\Fixture\Xml\Sluggable');
         $config = $this->sluggable->getConfiguration($this->em, $meta->name);
 
-        $this->assertArrayHasKey('slug', $config);
-        $this->assertEquals('slug', $config['slug']);
-        $this->assertArrayHasKey('style', $config);
-        $this->assertEquals('camel', $config['style']);
-        $this->assertArrayHasKey('updatable', $config);
-        $this->assertTrue($config['updatable']);
-        $this->assertArrayHasKey('unique', $config);
-        $this->assertTrue($config['unique']);
-        $this->assertArrayHasKey('separator', $config);
-        $this->assertEquals('_', $config['separator']);
+        $this->assertArrayHasKey('slugFields', $config);
+        $this->assertEquals('slug', $config['slugFields']['slug']['slug']);
+        $this->assertArrayHasKey('style', $config['slugFields']['slug']);
+        $this->assertEquals('camel', $config['slugFields']['slug']['style']);
+        $this->assertArrayHasKey('updatable', $config['slugFields']['slug']);
+        $this->assertTrue($config['slugFields']['slug']['updatable']);
+        $this->assertArrayHasKey('unique', $config['slugFields']['slug']);
+        $this->assertTrue($config['slugFields']['slug']['unique']);
+        $this->assertArrayHasKey('separator', $config['slugFields']['slug']);
+        $this->assertEquals('_', $config['slugFields']['slug']['separator']);
 
         $this->assertArrayHasKey('fields', $config);
-        $this->assertEquals(3, count($config['fields']));
+        $this->assertEquals(3, count($config['fields']['slug']));
         $fields = $config['fields'];
 
-        $this->assertEquals('title', $fields[0]['field']);
-        $this->assertEquals(0, $fields[0]['position']);
-        $this->assertEquals('code', $fields[1]['field']);
-        $this->assertEquals(false, $fields[1]['position']);
-        $this->assertEquals('ean', $fields[2]['field']);
-        $this->assertEquals(1, $fields[2]['position']);
+        $this->assertEquals('title', $fields['slug'][0]['field']);
+        $this->assertEquals(0, $fields['slug'][0]['position']);
+        $this->assertEquals('code', $fields['slug'][1]['field']);
+        $this->assertEquals(false, $fields['slug'][1]['position']);
+        $this->assertEquals('ean', $fields['slug'][2]['field']);
+        $this->assertEquals(1, $fields['slug'][2]['position']);
     }
 }