[limb-svn] r6334 - in 3.x/trunk/limb/validation: src/rule tests/cases/rule

svn at limb-project.com svn at limb-project.com
Tue Sep 25 15:39:40 MSD 2007


Author: serega
Date: 2007-09-25 15:39:40 +0400 (Tue, 25 Sep 2007)
New Revision: 6334
URL: http://fisheye.limb-project.com/changelog/limb/?cs=6334

Added:
   3.x/trunk/limb/validation/src/rule/lmbBaseValidationRule.class.php
   3.x/trunk/limb/validation/src/rule/lmbCallbackRule.class.php
   3.x/trunk/limb/validation/tests/cases/rule/lmbBaseValidationRuleTest.class.php
   3.x/trunk/limb/validation/tests/cases/rule/lmbCallbackRuleTest.class.php
Modified:
   3.x/trunk/limb/validation/src/rule/lmbAtleastOneFieldRequiredRule.class.php
   3.x/trunk/limb/validation/src/rule/lmbMatchRule.class.php
   3.x/trunk/limb/validation/src/rule/lmbRequiredObjectRule.class.php
   3.x/trunk/limb/validation/src/rule/lmbRequiredRule.class.php
   3.x/trunk/limb/validation/src/rule/lmbSingleFieldRule.class.php
   3.x/trunk/limb/validation/tests/cases/rule/lmbMatchRuleTest.class.php
   3.x/trunk/limb/validation/tests/cases/rule/lmbRequiredObjectRuleTest.class.php
   3.x/trunk/limb/validation/tests/cases/rule/lmbRequiredRuleTest.class.php
Log:
-- Considerable refactoring in VALIDATION package (BC preserved)
  * new lmbBaseValidationRule class added that implements lmbValidationRule. lmbBaseValidationRule has is_valid property and isValid() method to get the property value. lmbBaseValidationRule is an abstract class and its children have to override property _doValidate($datasource) method. lmbBaseValidationRule keeps error_list as its property as well. If you need to add an error to error_list if a child class of lmbBaseValidationRule please use error($message, $fields, $values) method that sets is_valid property to false. lmbBaseValidationRule return is_valid value from validate() method.
  * lmbSingleFieldRule, lmbRequiredObjectRule, lmbRequiredRule, lmbMatchRule now inherite from lmbBaseValidationRule
  * new lmbCallbackRule added that allows to use any function or method as a validation rule. Callback should accepts $datasource and $error_list as arguments (just like lmbValidationRule :: validate($datasource, $error_list);
  * It is considered a good practice now to return validation result from validate() method of your custom validation rules in case if you don't inherit from lmbBaseValidationRule.

Modified: 3.x/trunk/limb/validation/src/rule/lmbAtleastOneFieldRequiredRule.class.php
===================================================================
--- 3.x/trunk/limb/validation/src/rule/lmbAtleastOneFieldRequiredRule.class.php	2007-09-24 16:38:22 UTC (rev 6333)
+++ 3.x/trunk/limb/validation/src/rule/lmbAtleastOneFieldRequiredRule.class.php	2007-09-25 11:39:40 UTC (rev 6334)
@@ -2,11 +2,11 @@
 /*
  * Limb PHP Framework
  *
- * @link http://limb-project.com 
+ * @link http://limb-project.com
  * @copyright  Copyright © 2004-2007 BIT(http://bit-creative.com)
- * @license    LGPL http://www.gnu.org/copyleft/lesser.html 
+ * @license    LGPL http://www.gnu.org/copyleft/lesser.html
  */
-lmb_require('limb/validation/src/rule/lmbValidationRule.interface.php');
+lmb_require('limb/validation/src/rule/lmbBaseValidationRule.class.php');
 
 /**
  * Checks that at least one field from a list has not null value
@@ -18,7 +18,7 @@
  * @package validation
  * @version $Id$
  */
-class lmbAtleastOneFieldRequiredRule implements lmbValidationRule
+class lmbAtleastOneFieldRequiredRule extends lmbBaseValidationRule
 {
   /**
   * @var array List of fields
@@ -36,14 +36,14 @@
   }
 
   /**
-  * @see lmbValidationRule :: validate()
+  * @see lmbBaseValidationRule :: _doValidate()
   */
-  function validate($datasource, $error_list)
+  protected function _doValidate($datasource)
   {
     if(!$this->_findAtleastOneField($datasource))
     {
       $error = $this->custom_error ? $this->custom_error : $this->_generateErrorMessage();
-      $error_list->addError($error, $this->field_names, array());
+      $this->error($error, $this->field_names, array());
     }
   }
 

Added: 3.x/trunk/limb/validation/src/rule/lmbBaseValidationRule.class.php
===================================================================
--- 3.x/trunk/limb/validation/src/rule/lmbBaseValidationRule.class.php	                        (rev 0)
+++ 3.x/trunk/limb/validation/src/rule/lmbBaseValidationRule.class.php	2007-09-25 11:39:40 UTC (rev 6334)
@@ -0,0 +1,60 @@
+<?php
+/*
+ * Limb PHP Framework
+ *
+ * @link http://limb-project.com
+ * @copyright  Copyright &copy; 2004-2007 BIT(http://bit-creative.com)
+ * @license    LGPL http://www.gnu.org/copyleft/lesser.html
+ */
+lmb_require('limb/validation/src/rule/lmbValidationRule.interface.php');
+
+/**
+ * A base class for validation rules.
+ * Implements Composite.
+ * @package validation
+ * @version $Id$
+ */
+abstract class lmbBaseValidationRule implements lmbValidationRule
+{
+  /**
+  * @var boolean Flag if validation rule has an error or not
+  */
+  protected $is_valid = true;
+
+  /**
+  * @see validate()
+  * @var lmbErrorList List of errors.
+  */
+  protected $error_list;
+
+  function isValid()
+  {
+    return $this->is_valid;
+  }
+
+  /**
+  * Addes an error to error list.
+  * Sets "is_valid" flag to false.
+  */
+  function error($message, $fields = array(), $values = array())
+  {
+    $this->error_list->addError($message, $fields, $values);
+    $this->is_valid = false;
+  }
+
+  /**
+  * Validates datasource
+  * @see lmbValidationRule :: validate
+  */
+  function validate($datasource, $error_list)
+  {
+    $this->error_list = $error_list;
+
+    $this->_doValidate($datasource);
+
+    return $this->is_valid;
+  }
+
+  abstract protected function _doValidate($datasource);
+}
+

Added: 3.x/trunk/limb/validation/src/rule/lmbCallbackRule.class.php
===================================================================
--- 3.x/trunk/limb/validation/src/rule/lmbCallbackRule.class.php	                        (rev 0)
+++ 3.x/trunk/limb/validation/src/rule/lmbCallbackRule.class.php	2007-09-25 11:39:40 UTC (rev 6334)
@@ -0,0 +1,35 @@
+<?php
+/*
+ * Limb PHP Framework
+ *
+ * @link http://limb-project.com
+ * @copyright  Copyright &copy; 2004-2007 BIT(http://bit-creative.com)
+ * @license    LGPL http://www.gnu.org/copyleft/lesser.html
+ */
+lmb_require('limb/validation/src/rule/lmbBaseValidationRule.class.php');
+lmb_require('limb/core/src/lmbDelegate.class.php');
+/**
+ * Validation rule that accepts callback in constructor and executes that callback in validate() method
+ * Callback must follow lmbValidationRule interface.
+ * Callback should return validation result that will be used as a value for lmbBaseValidationRule :: $is_valid property.
+ * @package validation
+ * @version $Id$
+ */
+class lmbCallbackRule extends lmbBaseValidationRule
+{
+  protected $callback;
+
+  function __construct($object, $method = '')
+  {
+    $this->callback = new lmbDelegate($object, $method);
+  }
+
+  /**
+  * @see lmbBaseValidationRule :: _doValidate()
+  */
+  protected function _doValidate($datasource)
+  {
+    $this->is_valid = $this->callback->invoke($datasource, $this->error_list);
+  }
+}
+

Modified: 3.x/trunk/limb/validation/src/rule/lmbMatchRule.class.php
===================================================================
--- 3.x/trunk/limb/validation/src/rule/lmbMatchRule.class.php	2007-09-24 16:38:22 UTC (rev 6333)
+++ 3.x/trunk/limb/validation/src/rule/lmbMatchRule.class.php	2007-09-25 11:39:40 UTC (rev 6334)
@@ -2,11 +2,11 @@
 /*
  * Limb PHP Framework
  *
- * @link http://limb-project.com 
+ * @link http://limb-project.com
  * @copyright  Copyright &copy; 2004-2007 BIT(http://bit-creative.com)
- * @license    LGPL http://www.gnu.org/copyleft/lesser.html 
+ * @license    LGPL http://www.gnu.org/copyleft/lesser.html
  */
-lmb_require('limb/validation/src/rule/lmbValidationRule.interface.php');
+lmb_require('limb/validation/src/rule/lmbBaseValidationRule.class.php');
 
 /**
  * Checks that field value exactly match a reference field value
@@ -18,7 +18,7 @@
  * @package validation
  * @version $Id$
  */
-class lmbMatchRule implements lmbValidationRule
+class lmbMatchRule extends lmbBaseValidationRule
 {
   /**
   * @var string Reference field name to match against
@@ -47,9 +47,9 @@
   }
 
   /**
-  * @see lmbValidationRule :: validate()
+  * @see lmbBaseValidationRule :: _doValidate()
   */
-  function validate($datasource, $error_list)
+  protected function _doValidate($datasource)
   {
     $value1 = $datasource->get($this->field_name);
     $value2 = $datasource->get($this->reference_field);
@@ -57,9 +57,7 @@
     if(isset($value1) && isset($value2) && strcmp($value1, $value2))
     {
       $error = $this->custom_error ? $this->custom_error : lmb_i18n('{Field} does not match {MatchField}.', 'validation');
-      $error_list->addError($error,
-                            array('Field' => $this->field_name,
-                                  'MatchField' => $this->reference_field));
+      $this->error($error, array('Field' => $this->field_name, 'MatchField' => $this->reference_field));
     }
   }
 }

Modified: 3.x/trunk/limb/validation/src/rule/lmbRequiredObjectRule.class.php
===================================================================
--- 3.x/trunk/limb/validation/src/rule/lmbRequiredObjectRule.class.php	2007-09-24 16:38:22 UTC (rev 6333)
+++ 3.x/trunk/limb/validation/src/rule/lmbRequiredObjectRule.class.php	2007-09-25 11:39:40 UTC (rev 6334)
@@ -2,12 +2,11 @@
 /*
  * Limb PHP Framework
  *
- * @link http://limb-project.com 
+ * @link http://limb-project.com
  * @copyright  Copyright &copy; 2004-2007 BIT(http://bit-creative.com)
- * @license    LGPL http://www.gnu.org/copyleft/lesser.html 
+ * @license    LGPL http://www.gnu.org/copyleft/lesser.html
  */
-lmb_require('limb/validation/src/rule/lmbValidationRule.interface.php');
-lmb_require('limb/i18n/common.inc.php');
+lmb_require('limb/validation/src/rule/lmbBaseValidationRule.class.php');
 
 /**
  * Checks that field is present in datasource and it's value is an object of some or any class
@@ -22,7 +21,7 @@
  * @package validation
  * @version $Id$
  */
-class lmbRequiredObjectRule implements lmbValidationRule
+class lmbRequiredObjectRule extends lmbBaseValidationRule
 {
   /**
   * @var string Field name
@@ -49,16 +48,16 @@
   }
 
   /**
-  * @see lmbValidationRule :: validate()
+  * @see lmbBaseValidationRule :: _doValidate()
   */
-  function validate($datasource, $error_list)
+  protected function _doValidate($datasource)
   {
     $value = $datasource->get($this->field_name);
 
     if(!is_object($value) || ($this->class && get_class($value) != $this->class))
     {
       $error = $this->custom_error ? $this->custom_error : lmb_i18n('Object {Field} is required', 'validation');
-      $error_list->addError($error, array('Field' => $this->field_name));
+      $this->error($error, array('Field' => $this->field_name));
       return;
     }
   }

Modified: 3.x/trunk/limb/validation/src/rule/lmbRequiredRule.class.php
===================================================================
--- 3.x/trunk/limb/validation/src/rule/lmbRequiredRule.class.php	2007-09-24 16:38:22 UTC (rev 6333)
+++ 3.x/trunk/limb/validation/src/rule/lmbRequiredRule.class.php	2007-09-25 11:39:40 UTC (rev 6334)
@@ -6,7 +6,7 @@
  * @copyright  Copyright &copy; 2004-2007 BIT(http://bit-creative.com)
  * @license    LGPL http://www.gnu.org/copyleft/lesser.html
  */
-lmb_require('limb/validation/src/rule/lmbValidationRule.interface.php');
+lmb_require('limb/validation/src/rule/lmbBaseValidationRule.class.php');
 lmb_require('limb/i18n/common.inc.php');
 
 /**
@@ -24,7 +24,7 @@
  * @package validation
  * @version $Id$
  */
-class lmbRequiredRule implements lmbValidationRule
+class lmbRequiredRule extends lmbBaseValidationRule
 {
   /**
   * @var string Field name
@@ -46,16 +46,15 @@
   }
 
   /**
-  * @see lmbValidationRule :: validate()
+  * @see lmbBaseValidationRule :: _doValidate()
   */
-  function validate($datasource, $error_list)
+  protected function _doValidate($datasource)
   {
     $value = $datasource->get($this->field_name);
     if(is_null($value) || (is_string($value) && trim($value) === ''))
     {
       $error = $this->custom_error ? $this->custom_error : lmb_i18n('{Field} is required', 'validation');
-      $error_list->addError($error, array('Field' => $this->field_name));
-      return;
+      $this->error($error, array('Field' => $this->field_name));
     }
   }
 }

Modified: 3.x/trunk/limb/validation/src/rule/lmbSingleFieldRule.class.php
===================================================================
--- 3.x/trunk/limb/validation/src/rule/lmbSingleFieldRule.class.php	2007-09-24 16:38:22 UTC (rev 6333)
+++ 3.x/trunk/limb/validation/src/rule/lmbSingleFieldRule.class.php	2007-09-25 11:39:40 UTC (rev 6334)
@@ -2,30 +2,25 @@
 /*
  * Limb PHP Framework
  *
- * @link http://limb-project.com 
+ * @link http://limb-project.com
  * @copyright  Copyright &copy; 2004-2007 BIT(http://bit-creative.com)
- * @license    LGPL http://www.gnu.org/copyleft/lesser.html 
+ * @license    LGPL http://www.gnu.org/copyleft/lesser.html
  */
-lmb_require('limb/validation/src/rule/lmbValidationRule.interface.php');
-lmb_require('limb/i18n/common.inc.php');
+lmb_require('limb/validation/src/rule/lmbBaseValidationRule.class.php');
 
 /**
  * A base class for rules responsbile for validating a single field should inherit this class.
  * @package validation
  * @version $Id$
  */
-abstract class lmbSingleFieldRule implements lmbValidationRule
+abstract class lmbSingleFieldRule extends lmbBaseValidationRule
 {
   /**
   * @var string Field name
   */
   protected $field_name;
+
   /**
-  * @see validate()
-  * @var lmbErrorList List of errors.
-  */
-  protected $error_list;
-  /**
   * @var string Custom error message
   */
   protected $custom_error;
@@ -60,7 +55,7 @@
   function error($message, $values = array(), $i18n_params = array())
   {
     $error = $this->custom_error ? $this->custom_error : lmb_i18n($message, $i18n_params, 'validation');
-    $this->error_list->addError($error, array('Field' => $this->field_name), $values);
+    parent :: error($error, array('Field' => $this->field_name), $values);
   }
 
   /**
@@ -69,11 +64,10 @@
   * Child classes must implement check($value) method to perform real validation.
   * To check field for existance and having none empty value use {@link lmbRequiredRule}
   * Fills {@link $error_list}
-  * @see lmbValidationRule :: validate
+  * @see lmbBaseValidationRule :: _doValidate()
   */
-  function validate($datasource, $error_list)
+  protected function _doValidate($datasource)
   {
-    $this->error_list = $error_list;
     $value = $datasource->get($this->field_name);
     if(isset($value) && $value !== '')
       $this->check($value);

Added: 3.x/trunk/limb/validation/tests/cases/rule/lmbBaseValidationRuleTest.class.php
===================================================================
--- 3.x/trunk/limb/validation/tests/cases/rule/lmbBaseValidationRuleTest.class.php	                        (rev 0)
+++ 3.x/trunk/limb/validation/tests/cases/rule/lmbBaseValidationRuleTest.class.php	2007-09-25 11:39:40 UTC (rev 6334)
@@ -0,0 +1,48 @@
+<?php
+/*
+ * Limb PHP Framework
+ *
+ * @link http://limb-project.com
+ * @copyright  Copyright &copy; 2004-2007 BIT(http://bit-creative.com)
+ * @license    LGPL http://www.gnu.org/copyleft/lesser.html
+ */
+lmb_require(dirname(__FILE__) . '/lmbValidationRuleTestCase.class.php');
+lmb_require('limb/validation/src/rule/lmbBaseValidationRule.class.php');
+lmb_require('limb/validation/src/rule/lmbValidationRule.interface.php');
+lmb_require('limb/validation/src/lmbValidator.class.php');
+
+class lmbStubBaseValidationRule extends lmbBaseValidationRule
+{
+  public $result = true;
+  public $validate_called = false;
+
+  protected function _doValidate($datasource)
+  {
+    $this->validate_called = true;
+    if(!$this->result)
+      $this->error('Some error');
+  }
+}
+
+class lmbConditionalValidationTest extends lmbValidationRuleTestCase
+{
+  function testValidate()
+  {
+    $rule = new lmbStubBaseValidationRule();
+
+    $this->assertTrue($rule->validate(new lmbSet(), $this->error_list));
+    $this->assertTrue($rule->isValid());
+  }
+
+  function testValidateNotValid()
+  {
+    $rule = new lmbStubBaseValidationRule();
+    $rule->result = false;
+
+    $this->assertFalse($rule->validate(new lmbSet(), $this->error_list));
+    $this->assertFalse($rule->isValid());
+  }
+
+}
+
+

Added: 3.x/trunk/limb/validation/tests/cases/rule/lmbCallbackRuleTest.class.php
===================================================================
--- 3.x/trunk/limb/validation/tests/cases/rule/lmbCallbackRuleTest.class.php	                        (rev 0)
+++ 3.x/trunk/limb/validation/tests/cases/rule/lmbCallbackRuleTest.class.php	2007-09-25 11:39:40 UTC (rev 6334)
@@ -0,0 +1,43 @@
+<?php
+/*
+ * Limb PHP Framework
+ *
+ * @link http://limb-project.com
+ * @copyright  Copyright &copy; 2004-2007 BIT(http://bit-creative.com)
+ * @license    LGPL http://www.gnu.org/copyleft/lesser.html
+ */
+lmb_require(dirname(__FILE__) . '/lmbValidationRuleTestCase.class.php');
+lmb_require('limb/validation/src/rule/lmbCallbackRule.class.php');
+
+class lmbCallbackRuleTest extends lmbValidationRuleTestCase
+{
+  protected $validate_callback_result = true;
+  protected $validate_called = false;
+
+  function testValidate()
+  {
+    $rule = new lmbCallbackRule($this, 'validate');
+
+    $this->assertTrue($rule->validate(new lmbSet(), $this->error_list));
+    $this->assertTrue($rule->isValid());
+  }
+
+  function testValidateNotValid()
+  {
+    $rule = new lmbCallbackRule($this, 'validate');
+    $this->validate_callback_result = false;
+
+    $this->assertFalse($rule->validate(new lmbSet(), $this->error_list));
+    $this->assertFalse($rule->isValid());
+  }
+
+  function validate($datasource, $error_list)
+  {
+    $this->validate_called = true;
+    if(!$this->validate_callback_result)
+      $error_list->addError('Some error');
+    return $this->validate_callback_result;
+  }
+}
+
+

Modified: 3.x/trunk/limb/validation/tests/cases/rule/lmbMatchRuleTest.class.php
===================================================================
--- 3.x/trunk/limb/validation/tests/cases/rule/lmbMatchRuleTest.class.php	2007-09-24 16:38:22 UTC (rev 6333)
+++ 3.x/trunk/limb/validation/tests/cases/rule/lmbMatchRuleTest.class.php	2007-09-25 11:39:40 UTC (rev 6334)
@@ -2,9 +2,9 @@
 /*
  * Limb PHP Framework
  *
- * @link http://limb-project.com 
+ * @link http://limb-project.com
  * @copyright  Copyright &copy; 2004-2007 BIT(http://bit-creative.com)
- * @license    LGPL http://www.gnu.org/copyleft/lesser.html 
+ * @license    LGPL http://www.gnu.org/copyleft/lesser.html
  */
 require_once(dirname(__FILE__) . '/lmbValidationRuleTestCase.class.php');
 lmb_require('limb/validation/src/rule/lmbMatchRule.class.php');
@@ -69,7 +69,8 @@
 
     $this->error_list->expectOnce('addError',
                                   array(lmb_i18n('{Field} does not match {MatchField}.', 'validation'),
-                                        array('Field' => 'testfield', 'MatchField' => 'testmatch')));
+                                        array('Field' => 'testfield', 'MatchField' => 'testmatch'),
+                                        array()));
 
     $rule->validate($dataspace, $this->error_list);
   }
@@ -84,7 +85,8 @@
 
     $this->error_list->expectOnce('addError',
                                   array('Custom_Error',
-                                        array('Field' => 'testfield', 'MatchField' => 'testmatch')));
+                                        array('Field' => 'testfield', 'MatchField' => 'testmatch'),
+                                        array()));
 
     $rule->validate($dataspace, $this->error_list);
   }

Modified: 3.x/trunk/limb/validation/tests/cases/rule/lmbRequiredObjectRuleTest.class.php
===================================================================
--- 3.x/trunk/limb/validation/tests/cases/rule/lmbRequiredObjectRuleTest.class.php	2007-09-24 16:38:22 UTC (rev 6333)
+++ 3.x/trunk/limb/validation/tests/cases/rule/lmbRequiredObjectRuleTest.class.php	2007-09-25 11:39:40 UTC (rev 6334)
@@ -2,9 +2,9 @@
 /*
  * Limb PHP Framework
  *
- * @link http://limb-project.com 
+ * @link http://limb-project.com
  * @copyright  Copyright &copy; 2004-2007 BIT(http://bit-creative.com)
- * @license    LGPL http://www.gnu.org/copyleft/lesser.html 
+ * @license    LGPL http://www.gnu.org/copyleft/lesser.html
  */
 lmb_require(dirname(__FILE__) . '/lmbValidationRuleTestCase.class.php');
 lmb_require('limb/validation/src/rule/lmbRequiredObjectRule.class.php');
@@ -32,7 +32,8 @@
     $dataspace = new lmbSet();
 
     $this->error_list->expectOnce('addError', array(lmb_i18n('Object {Field} is required', 'validation'),
-                                                         array('Field'=>'testfield')));
+                                                         array('Field'=>'testfield'),
+                                                         array()));
 
     $rule->validate($dataspace, $this->error_list);
   }
@@ -44,7 +45,8 @@
     $dataspace = new lmbSet(array('testfield' => 'whatever_and_not_object'));
 
     $this->error_list->expectOnce('addError', array(lmb_i18n('Object {Field} is required', 'validation'),
-                                                         array('Field'=>'testfield')));
+                                                         array('Field'=>'testfield'),
+                                                         array()));
 
     $rule->validate($dataspace, $this->error_list);
   }
@@ -57,7 +59,8 @@
     $dataspace->set('testfield', new TestObjectForThisRule());
 
     $this->error_list->expectOnce('addError', array(lmb_i18n('Object {Field} is required', 'validation'),
-                                                         array('Field'=>'testfield')));
+                                                         array('Field'=>'testfield'),
+                                                         array()));
     $rule->validate($dataspace, $this->error_list);
   }
 
@@ -69,7 +72,8 @@
     $dataspace->set('testfield', new TestObjectForThisRule());
 
     $this->error_list->expectOnce('addError', array('Custom_Error',
-                                                    array('Field'=>'testfield')));
+                                                    array('Field'=>'testfield'),
+                                                    array()));
     $rule->validate($dataspace, $this->error_list);
   }
 }

Modified: 3.x/trunk/limb/validation/tests/cases/rule/lmbRequiredRuleTest.class.php
===================================================================
--- 3.x/trunk/limb/validation/tests/cases/rule/lmbRequiredRuleTest.class.php	2007-09-24 16:38:22 UTC (rev 6333)
+++ 3.x/trunk/limb/validation/tests/cases/rule/lmbRequiredRuleTest.class.php	2007-09-25 11:39:40 UTC (rev 6334)
@@ -21,6 +21,7 @@
     $this->error_list->expectNever('addError');
 
     $rule->validate($dataspace, $this->error_list);
+    $this->assertTrue($rule->isValid());
   }
 
   function testRequiredRuleZero()
@@ -33,6 +34,7 @@
     $this->error_list->expectNever('addError');
 
     $rule->validate($dataspace, $this->error_list);
+    $this->assertTrue($rule->isValid());
   }
 
   function testRequiredRuleZeroString()
@@ -67,9 +69,11 @@
     $dataspace->set('testfield', '');
 
     $this->error_list->expectOnce('addError', array(lmb_i18n('{Field} is required', 'validation'),
-                                                         array('Field'=>'testfield')));
+                                                         array('Field'=>'testfield'),
+                                                         array()));
 
     $rule->validate($dataspace, $this->error_list);
+    $this->assertFalse($rule->isValid());
   }
 
   function testRequiredRuleWithNull()
@@ -80,7 +84,8 @@
     $dataspace->set('testfield', NULL);
 
     $this->error_list->expectOnce('addError', array(lmb_i18n('{Field} is required', 'validation'),
-                                                         array('Field'=>'testfield')));
+                                                         array('Field'=>'testfield'),
+                                                         array()));
 
     $rule->validate($dataspace, $this->error_list);
   }
@@ -93,7 +98,8 @@
     $dataspace->set('testfield', "\n\t   \n\t");
 
     $this->error_list->expectOnce('addError', array(lmb_i18n('{Field} is required', 'validation'),
-                                                         array('Field'=>'testfield')));
+                                                         array('Field'=>'testfield'),
+                                                         array()));
 
     $rule->validate($dataspace, $this->error_list);
   }
@@ -105,7 +111,8 @@
     $dataspace = new lmbSet();
 
     $this->error_list->expectOnce('addError', array(lmb_i18n('{Field} is required', 'validation'),
-                                                         array('Field'=>'testfield')));
+                                                         array('Field'=>'testfield'),
+                                                         array()));
 
     $rule->validate($dataspace, $this->error_list);
   }
@@ -117,7 +124,8 @@
     $dataspace = new lmbSet();
 
     $this->error_list->expectOnce('addError', array('Custom_Error',
-                                                    array('Field'=>'testfield')));
+                                                    array('Field'=>'testfield'),
+                                                         array()));
 
     $rule->validate($dataspace, $this->error_list);
   }



More information about the limb-svn mailing list