浏览代码

Add sub model filtering tests.

Romain Geissler 13 年之前
父节点
当前提交
2e907a4a78
共有 2 个文件被更改,包括 66 次插入0 次删除
  1. 32 0
      Tests/Filter/ModelFilterTest.php
  2. 34 0
      Tests/Filter/StringFilterTest.php

+ 32 - 0
Tests/Filter/ModelFilterTest.php

@@ -121,4 +121,36 @@ class ModelFilterTest extends \PHPUnit_Framework_TestCase
         $this->assertEquals(array('o.association_mapping', 's_association_mapping = :field_name_0'), $builder->query);
         $this->assertEquals(true, $filter->isActive());
     }
+
+    public function testAssociationWithValidParentAssociationMappings()
+    {
+        $filter = new ModelFilter;
+        $filter->initialize('field_name', array(
+            'mapping_type' => ClassMetadataInfo::ONE_TO_ONE,
+            'field_name' => 'field_name',
+            'parent_association_mappings' => array(
+                array(
+                    'fieldName' => 'association_mapping'
+                ),
+                array(
+                    'fieldName' => 'sub_association_mapping'
+                ),
+            ),
+            'association_mapping' => array(
+                'fieldName' => 'sub_sub_association_mapping'
+            )
+        ));
+
+        $builder = new ProxyQuery(new QueryBuilder);
+
+        $filter->apply($builder, array('type' => EqualType::TYPE_IS_EQUAL, 'value' => 'asd'));
+
+        $this->assertEquals(array(
+            'o.association_mapping',
+            's_association_mapping.sub_association_mapping',
+            's_association_mapping_sub_association_mapping.sub_sub_association_mapping',
+            's_association_mapping_sub_association_mapping_sub_sub_association_mapping = :field_name_0'
+        ), $builder->query);
+        $this->assertEquals(true, $filter->isActive());
+    }
 }

+ 34 - 0
Tests/Filter/StringFilterTest.php

@@ -80,4 +80,38 @@ class StringFilterTest extends \PHPUnit_Framework_TestCase
         $this->assertEquals(array('field_name_0' => 'asd'), $builder->parameters);
         $this->assertEquals(true, $filter->isActive());
     }
+
+    public function testEqualsWithValidParentAssociationMappings()
+    {
+        $filter = new StringFilter;
+        $filter->initialize('field_name', array(
+            'format' => '%s',
+            'field_name' => 'field_name',
+            'parent_association_mappings' => array(
+                array(
+                    'fieldName' => 'association_mapping'
+                ),
+                array(
+                    'fieldName' => 'sub_association_mapping'
+                ),
+                array(
+                    'fieldName' => 'sub_sub_association_mapping'
+                ),
+            )
+        ));
+
+        $builder = new ProxyQuery(new QueryBuilder);
+        $this->assertEquals(array(), $builder->query);
+
+        $filter->apply($builder, array('type' => ChoiceType::TYPE_EQUAL, 'value' => 'asd'));
+
+        $this->assertEquals(array(
+            'o.association_mapping',
+            's_association_mapping.sub_association_mapping',
+            's_association_mapping_sub_association_mapping.sub_sub_association_mapping',
+            's_association_mapping_sub_association_mapping_sub_sub_association_mapping.field_name = :field_name_0'
+        ), $builder->query);
+        $this->assertEquals(array('field_name_0' => 'asd'), $builder->parameters);
+        $this->assertEquals(true, $filter->isActive());
+    }
 }