Author: Kris.Wallsmith
Date: 2010-04-06 13:30:44 +0200 (Tue, 06 Apr 2010)
New Revision: 28992

Modified:
   
branches/1.3/lib/plugins/sfDoctrinePlugin/lib/form/sfFormFilterDoctrine.class.php
   branches/1.3/lib/plugins/sfDoctrinePlugin/test/functional/I18nTest.php
   
branches/1.3/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/config/doctrine/schema.yml
   
branches/1.3/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/data/sql/schema.sql
   
branches/1.3/lib/plugins/sfDoctrinePlugin/test/unit/form/sfFormFilterDoctrineTest.php
   
branches/1.4/lib/plugins/sfDoctrinePlugin/lib/form/sfFormFilterDoctrine.class.php
   branches/1.4/lib/plugins/sfDoctrinePlugin/test/functional/I18nTest.php
   
branches/1.4/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/config/doctrine/schema.yml
   
branches/1.4/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/data/sql/schema.sql
   
branches/1.4/lib/plugins/sfDoctrinePlugin/test/unit/form/sfFormFilterDoctrineTest.php
Log:
[1.3, 1.4] updated doctrine form filter to check for NULL or an empty string on 
text and number fields for parity with the propel form filter (closes #7635)

Modified: 
branches/1.3/lib/plugins/sfDoctrinePlugin/lib/form/sfFormFilterDoctrine.class.php
===================================================================
--- 
branches/1.3/lib/plugins/sfDoctrinePlugin/lib/form/sfFormFilterDoctrine.class.php
   2010-04-06 06:29:54 UTC (rev 28991)
+++ 
branches/1.3/lib/plugins/sfDoctrinePlugin/lib/form/sfFormFilterDoctrine.class.php
   2010-04-06 11:30:44 UTC (rev 28992)
@@ -227,7 +227,7 @@
 
     if (is_array($values) && isset($values['is_empty']) && $values['is_empty'])
     {
-      $query->addWhere(sprintf('%s.%s IS NULL', $query->getRootAlias(), 
$fieldName));
+      $query->addWhere(sprintf('(%s.%s IS NULL OR %1$s.%2$s = ?)', 
$query->getRootAlias(), $fieldName), array(''));
     }
     else if (is_array($values) && isset($values['text']) && '' != 
$values['text'])
     {
@@ -241,7 +241,7 @@
 
     if (is_array($values) && isset($values['is_empty']) && $values['is_empty'])
     {
-      $query->addWhere(sprintf('%s.%s IS NULL', $query->getRootAlias(), 
$fieldName));
+      $query->addWhere(sprintf('(%s.%s IS NULL OR %1$s.%2$s = ?)', 
$query->getRootAlias(), $fieldName), array(''));
     }
     else if (is_array($values) && isset($values['text']) && '' !== 
$values['text'])
     {

Modified: branches/1.3/lib/plugins/sfDoctrinePlugin/test/functional/I18nTest.php
===================================================================
--- branches/1.3/lib/plugins/sfDoctrinePlugin/test/functional/I18nTest.php      
2010-04-06 06:29:54 UTC (rev 28991)
+++ branches/1.3/lib/plugins/sfDoctrinePlugin/test/functional/I18nTest.php      
2010-04-06 11:30:44 UTC (rev 28992)
@@ -94,6 +94,7 @@
   ),
   'id' => null,
   'type' => null,
+  'views' => null,
   'created_at' => $data['created_at'],
   'updated_at' => $data['updated_at'],
 );
@@ -107,6 +108,7 @@
   'author_id' => $article->Author->id,
   'is_on_homepage' => true,
   'type' => null,
+  'views' => null,
   'created_at' => $article->created_at,
   'updated_at' => $article->updated_at,
   'Translation' => 
@@ -147,6 +149,7 @@
   'author_id' => $article->author_id,
   'is_on_homepage' => true,
   'type' => null,
+  'views' => null,
   'created_at' => $article->created_at,
   'updated_at' => $article->updated_at,
   'en' => 

Modified: 
branches/1.3/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/config/doctrine/schema.yml
===================================================================
--- 
branches/1.3/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/config/doctrine/schema.yml
       2010-04-06 06:29:54 UTC (rev 28991)
+++ 
branches/1.3/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/config/doctrine/schema.yml
       2010-04-06 11:30:44 UTC (rev 28992)
@@ -16,6 +16,7 @@
       unique: true
     body: string(255)
     test_column: string(255)
+    views: integer
   relations:
     Author:
       foreignAlias: Articles

Modified: 
branches/1.3/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/data/sql/schema.sql
===================================================================
--- 
branches/1.3/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/data/sql/schema.sql
      2010-04-06 06:29:54 UTC (rev 28991)
+++ 
branches/1.3/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/data/sql/schema.sql
      2010-04-06 11:30:44 UTC (rev 28992)
@@ -1,4 +1,4 @@
-CREATE TABLE article (id INTEGER PRIMARY KEY AUTOINCREMENT, author_id INTEGER, 
is_on_homepage INTEGER, type VARCHAR(255), created_at DATETIME NOT NULL, 
updated_at DATETIME NOT NULL);
+CREATE TABLE article (id INTEGER PRIMARY KEY AUTOINCREMENT, author_id INTEGER, 
is_on_homepage INTEGER, views INTEGER, type VARCHAR(255), created_at DATETIME 
NOT NULL, updated_at DATETIME NOT NULL);
 CREATE TABLE attachment (id INTEGER PRIMARY KEY AUTOINCREMENT, file_path 
VARCHAR(255));
 CREATE TABLE author (id INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR(255), 
type VARCHAR(255));
 CREATE TABLE author_inheritance_concrete (id INTEGER PRIMARY KEY 
AUTOINCREMENT, name VARCHAR(255), type VARCHAR(255), additional VARCHAR(255));

Modified: 
branches/1.3/lib/plugins/sfDoctrinePlugin/test/unit/form/sfFormFilterDoctrineTest.php
===================================================================
--- 
branches/1.3/lib/plugins/sfDoctrinePlugin/test/unit/form/sfFormFilterDoctrineTest.php
       2010-04-06 06:29:54 UTC (rev 28991)
+++ 
branches/1.3/lib/plugins/sfDoctrinePlugin/test/unit/form/sfFormFilterDoctrineTest.php
       2010-04-06 11:30:44 UTC (rev 28992)
@@ -3,7 +3,7 @@
 $app = 'frontend';
 include dirname(__FILE__).'/../../bootstrap/functional.php';
 
-$t = new lime_test(12);
+$t = new lime_test(16);
 
 class TestFormFilter extends ArticleFormFilter
 {
@@ -106,6 +106,18 @@
 $t->is(trim($query->getDql()), 'FROM Article r WHERE r.author_id = ?', 
'->getQuery() filters by a 0 number');
 $t->is($query->getFlattenedParams(), array(0), '->getQuery() filters by a 0 
number');
 
+$filter = new ArticleFormFilter();
+$filter->bind(array('type' => array('is_empty' => '1', 'text' => '')));
+$query = $filter->getQuery();
+$t->is(trim($query->getDql()), 'FROM Article r WHERE (r.type IS NULL OR r.type 
= ?)', '->getQuery() tests for null or empty text fields');
+$t->is($query->getFlattenedParams(), array(''), '->getQuery() tests for null 
or empty text fields');
+
+$filter = new ArticleFormFilter();
+$filter->bind(array('views' => array('is_empty' => '1', 'text' => '')));
+$query = $filter->getQuery();
+$t->is(trim($query->getDql()), 'FROM Article r WHERE (r.views IS NULL OR 
r.views = ?)', '->getQuery() tests for null or empty number fields');
+$t->is($query->getFlattenedParams(), array(''), '->getQuery() tests for null 
or empty number fields');
+
 $t->diag('->setTableMethod()');
 
 $filter = new ArticleFormFilter();

Modified: 
branches/1.4/lib/plugins/sfDoctrinePlugin/lib/form/sfFormFilterDoctrine.class.php
===================================================================
--- 
branches/1.4/lib/plugins/sfDoctrinePlugin/lib/form/sfFormFilterDoctrine.class.php
   2010-04-06 06:29:54 UTC (rev 28991)
+++ 
branches/1.4/lib/plugins/sfDoctrinePlugin/lib/form/sfFormFilterDoctrine.class.php
   2010-04-06 11:30:44 UTC (rev 28992)
@@ -227,7 +227,7 @@
 
     if (is_array($values) && isset($values['is_empty']) && $values['is_empty'])
     {
-      $query->addWhere(sprintf('%s.%s IS NULL', $query->getRootAlias(), 
$fieldName));
+      $query->addWhere(sprintf('(%s.%s IS NULL OR %1$s.%2$s = ?)', 
$query->getRootAlias(), $fieldName), array(''));
     }
     else if (is_array($values) && isset($values['text']) && '' != 
$values['text'])
     {
@@ -241,7 +241,7 @@
 
     if (is_array($values) && isset($values['is_empty']) && $values['is_empty'])
     {
-      $query->addWhere(sprintf('%s.%s IS NULL', $query->getRootAlias(), 
$fieldName));
+      $query->addWhere(sprintf('(%s.%s IS NULL OR %1$s.%2$s = ?)', 
$query->getRootAlias(), $fieldName), array(''));
     }
     else if (is_array($values) && isset($values['text']) && '' !== 
$values['text'])
     {

Modified: branches/1.4/lib/plugins/sfDoctrinePlugin/test/functional/I18nTest.php
===================================================================
--- branches/1.4/lib/plugins/sfDoctrinePlugin/test/functional/I18nTest.php      
2010-04-06 06:29:54 UTC (rev 28991)
+++ branches/1.4/lib/plugins/sfDoctrinePlugin/test/functional/I18nTest.php      
2010-04-06 11:30:44 UTC (rev 28992)
@@ -94,6 +94,7 @@
   ),
   'id' => null,
   'type' => null,
+  'views' => null,
   'created_at' => $data['created_at'],
   'updated_at' => $data['updated_at'],
 );
@@ -107,6 +108,7 @@
   'author_id' => $article->Author->id,
   'is_on_homepage' => true,
   'type' => null,
+  'views' => null,
   'created_at' => $article->created_at,
   'updated_at' => $article->updated_at,
   'Translation' => 
@@ -147,6 +149,7 @@
   'author_id' => $article->author_id,
   'is_on_homepage' => true,
   'type' => null,
+  'views' => null,
   'created_at' => $article->created_at,
   'updated_at' => $article->updated_at,
   'en' => 

Modified: 
branches/1.4/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/config/doctrine/schema.yml
===================================================================
--- 
branches/1.4/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/config/doctrine/schema.yml
       2010-04-06 06:29:54 UTC (rev 28991)
+++ 
branches/1.4/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/config/doctrine/schema.yml
       2010-04-06 11:30:44 UTC (rev 28992)
@@ -16,6 +16,7 @@
       unique: true
     body: string(255)
     test_column: string(255)
+    views: integer
   relations:
     Author:
       foreignAlias: Articles

Modified: 
branches/1.4/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/data/sql/schema.sql
===================================================================
--- 
branches/1.4/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/data/sql/schema.sql
      2010-04-06 06:29:54 UTC (rev 28991)
+++ 
branches/1.4/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/data/sql/schema.sql
      2010-04-06 11:30:44 UTC (rev 28992)
@@ -1,4 +1,4 @@
-CREATE TABLE article (id INTEGER PRIMARY KEY AUTOINCREMENT, author_id INTEGER, 
is_on_homepage INTEGER, type VARCHAR(255), created_at DATETIME NOT NULL, 
updated_at DATETIME NOT NULL);
+CREATE TABLE article (id INTEGER PRIMARY KEY AUTOINCREMENT, author_id INTEGER, 
is_on_homepage INTEGER, views INTEGER, type VARCHAR(255), created_at DATETIME 
NOT NULL, updated_at DATETIME NOT NULL);
 CREATE TABLE attachment (id INTEGER PRIMARY KEY AUTOINCREMENT, file_path 
VARCHAR(255));
 CREATE TABLE author (id INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR(255), 
type VARCHAR(255));
 CREATE TABLE author_inheritance_concrete (id INTEGER PRIMARY KEY 
AUTOINCREMENT, name VARCHAR(255), type VARCHAR(255), additional VARCHAR(255));

Modified: 
branches/1.4/lib/plugins/sfDoctrinePlugin/test/unit/form/sfFormFilterDoctrineTest.php
===================================================================
--- 
branches/1.4/lib/plugins/sfDoctrinePlugin/test/unit/form/sfFormFilterDoctrineTest.php
       2010-04-06 06:29:54 UTC (rev 28991)
+++ 
branches/1.4/lib/plugins/sfDoctrinePlugin/test/unit/form/sfFormFilterDoctrineTest.php
       2010-04-06 11:30:44 UTC (rev 28992)
@@ -3,7 +3,7 @@
 $app = 'frontend';
 include dirname(__FILE__).'/../../bootstrap/functional.php';
 
-$t = new lime_test(12);
+$t = new lime_test(16);
 
 class TestFormFilter extends ArticleFormFilter
 {
@@ -106,6 +106,18 @@
 $t->is(trim($query->getDql()), 'FROM Article r WHERE r.author_id = ?', 
'->getQuery() filters by a 0 number');
 $t->is($query->getFlattenedParams(), array(0), '->getQuery() filters by a 0 
number');
 
+$filter = new ArticleFormFilter();
+$filter->bind(array('type' => array('is_empty' => '1', 'text' => '')));
+$query = $filter->getQuery();
+$t->is(trim($query->getDql()), 'FROM Article r WHERE (r.type IS NULL OR r.type 
= ?)', '->getQuery() tests for null or empty text fields');
+$t->is($query->getFlattenedParams(), array(''), '->getQuery() tests for null 
or empty text fields');
+
+$filter = new ArticleFormFilter();
+$filter->bind(array('views' => array('is_empty' => '1', 'text' => '')));
+$query = $filter->getQuery();
+$t->is(trim($query->getDql()), 'FROM Article r WHERE (r.views IS NULL OR 
r.views = ?)', '->getQuery() tests for null or empty number fields');
+$t->is($query->getFlattenedParams(), array(''), '->getQuery() tests for null 
or empty number fields');
+
 $t->diag('->setTableMethod()');
 
 $filter = new ArticleFormFilter();

-- 
You received this message because you are subscribed to the Google Groups 
"symfony SVN" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/symfony-svn?hl=en.

Reply via email to