Browse Source

Update number filter to match the string behavior on undefined type

Thomas Rabaix 14 years ago
parent
commit
cf8361af1c
2 changed files with 8 additions and 4 deletions
  1. 5 3
      Filter/ORM/NumberFilter.php
  2. 3 1
      Tests/Filter/ORM/NumberFilterTest.php

+ 5 - 3
Filter/ORM/NumberFilter.php

@@ -24,14 +24,16 @@ class NumberFilter extends Filter
      */
      */
     public function filter($queryBuilder, $alias, $field, $data)
     public function filter($queryBuilder, $alias, $field, $data)
     {
     {
-        if (!$data || !is_array($data) || !array_key_exists('type', $data) || !array_key_exists('value', $data)) {
+        if (!$data || !is_array($data) || !array_key_exists('value', $data)) {
             return;
             return;
         }
         }
 
 
-        $operator = $this->getOperator((int) $data['type']);
+        $type = isset($data['type']) ? $data['type'] : false;
+
+        $operator = $this->getOperator($type);
 
 
         if (!$operator) {
         if (!$operator) {
-            return;
+            $operator = '=';
         }
         }
 
 
         // c.name > '1' => c.name OPERATOR :FIELDNAME
         // c.name > '1' => c.name OPERATOR :FIELDNAME

+ 3 - 1
Tests/Filter/ORM/NumberFilterTest.php

@@ -53,13 +53,15 @@ class NumberFilterTest extends \PHPUnit_Framework_TestCase
         $filter->filter($builder, 'alias', 'field', array('type' => NumberType::TYPE_GREATER_THAN, 'value' => 42));
         $filter->filter($builder, 'alias', 'field', array('type' => NumberType::TYPE_GREATER_THAN, 'value' => 42));
         $filter->filter($builder, 'alias', 'field', array('type' => NumberType::TYPE_LESS_EQUAL, 'value' => 42));
         $filter->filter($builder, 'alias', 'field', array('type' => NumberType::TYPE_LESS_EQUAL, 'value' => 42));
         $filter->filter($builder, 'alias', 'field', array('type' => NumberType::TYPE_LESS_THAN, 'value' => 42));
         $filter->filter($builder, 'alias', 'field', array('type' => NumberType::TYPE_LESS_THAN, 'value' => 42));
+        $filter->filter($builder, 'alias', 'field', array('value' => 42));
 
 
         $expected = array(
         $expected = array(
             'alias.field = :field_name',
             'alias.field = :field_name',
             'alias.field >= :field_name',
             'alias.field >= :field_name',
             'alias.field > :field_name',
             'alias.field > :field_name',
             'alias.field <= :field_name',
             'alias.field <= :field_name',
-            'alias.field < :field_name'
+            'alias.field < :field_name',
+            'alias.field = :field_name',
         );
         );
 
 
         $this->assertEquals($expected, $builder->query);
         $this->assertEquals($expected, $builder->query);