[limb-svn] r7064 - in 3.x/trunk/limb/validation: src tests/cases
svn at limb-project.com
svn at limb-project.com
Wed Jun 25 09:26:19 MSD 2008
Author: pachanga
Date: 2008-06-25 09:26:19 +0400 (Wed, 25 Jun 2008)
New Revision: 7064
URL: http://fisheye.limb-project.com/changelog/limb/?cs=7064
Added:
3.x/trunk/limb/validation/tests/cases/lmbValidatorBuilderTest.class.php
Modified:
3.x/trunk/limb/validation/src/lmbValidatorBuilder.class.php
Log:
-- adding initial tests for lmbValidatorBuilder, adding lmbValidatorRule :: build() method
Modified: 3.x/trunk/limb/validation/src/lmbValidatorBuilder.class.php
===================================================================
--- 3.x/trunk/limb/validation/src/lmbValidatorBuilder.class.php 2008-06-24 14:19:40 UTC (rev 7063)
+++ 3.x/trunk/limb/validation/src/lmbValidatorBuilder.class.php 2008-06-25 05:26:19 UTC (rev 7064)
@@ -61,39 +61,42 @@
* );
*
* @param object $validator (optional)
- * @return object fully built validator
*/
- static function addRules($rules_lists, $validator = null) {
- if (!$validator) {
- $validator = new lmbValidator();
- }
-
- if (!is_array($rules_lists)) {
+ static function addRules($rules_lists, lmbValidator $validator) {
+ if(!is_array($rules_lists)) {
return null; // there must be at least 1 list of rules per field
}
foreach($rules_lists as $field => $list) {
- if (is_string($list)) {
+ if(is_string($list)) {
$list = explode('|', $list);
}
foreach($list as $rule_name => $rule) { // by default $rule has simple format
$error = '';
- if (is_string($rule_name)) { // extended format
+ if(is_string($rule_name)) { // extended format
$error = $rule;
$rule = $rule_name;
}
- if ($object_rule = self::parseRule($field, $rule, $error)) {
+ if($object_rule = self :: parseRule($field, $rule, $error)) {
$validator->addRule($object_rule);
}
}
}
-
- return $validator;
}
+
+ /**
+ * @return object fully built validator
+ */
+ static function build($rules_list)
+ {
+ $validator = new lmbValidator();
+ self :: addRules($rules_list, $validator);
+ return $validator;
+ }
/**
* Parse text representation of a rule and return rule object
@@ -107,37 +110,37 @@
$params = array();
- if (!preg_match('/^([^\[]+)(\[(.+)\])?$/i', $rule, $matches)) { // let's parse the rule
+ if(!preg_match('/^([^\[]+)(\[(.+)\])?$/i', $rule, $matches)) { // let's parse the rule
return null;
}
$rule_name = $matches[1];
- if (isset($matches[3])) {
+ if(isset($matches[3])) {
$params = explode(',', $matches[3]);
}
array_unshift($params, $field); // field must be the first in params
- if (!empty($error)) {
+ if(!empty($error)) {
array_push($params, $error); // but error the last
}
- $params = self::trim($params);
+ $params = self :: trim($params);
- $path_to_rule = self::getPathByRuleName($rule_name);
+ $path_to_rule = self :: getPathByRuleName($rule_name);
return new lmbHandle($path_to_rule, $params);
}
static function getPathByRuleName($rule_name) {
- if (isset(self::$user_rules[$rule_name])) {
+ if(isset(self :: $user_rules[$rule_name])) {
return $user_rules[$rule_name];
- } elseif (isset(self::$rules_shortcuts[$rule_name])) {
- return LMB_RULES_DIR . '/' . self::getLmbRule(self::$rules_shortcuts[$rule_name]);
- } elseif (strpos($rule_name, 'lmb') === 0) { // $rule_name is exactly limb filename
+ } elseif(isset(self :: $rules_shortcuts[$rule_name])) {
+ return LMB_RULES_DIR . '/' . self :: getLmbRule(self :: $rules_shortcuts[$rule_name]);
+ } elseif(strpos($rule_name, 'lmb') === 0) { // $rule_name is exactly limb filename
return LMB_RULES_DIR . '/' . $rule_name;
} else {
- return LMB_RULES_DIR . '/' . self::getLmbRule($rule_name);
+ return LMB_RULES_DIR . '/' . self :: getLmbRule($rule_name);
}
}
@@ -146,7 +149,7 @@
}
static function registerRule($name, $path) {
- self::$user_rules[$name] = $path;
+ self :: $user_rules[$name] = $path;
}
static function trim($arr) {
Added: 3.x/trunk/limb/validation/tests/cases/lmbValidatorBuilderTest.class.php
===================================================================
--- 3.x/trunk/limb/validation/tests/cases/lmbValidatorBuilderTest.class.php (rev 0)
+++ 3.x/trunk/limb/validation/tests/cases/lmbValidatorBuilderTest.class.php 2008-06-25 05:26:19 UTC (rev 7064)
@@ -0,0 +1,31 @@
+<?php
+/*
+ * Limb PHP Framework
+ *
+ * @link http://limb-project.com
+ * @copyright Copyright © 2004-2007 BIT(http://bit-creative.com)
+ * @license LGPL http://www.gnu.org/copyleft/lesser.html
+ */
+lmb_require('limb/validation/src/lmbValidator.class.php');
+lmb_require('limb/validation/src/lmbValidatorBuilder.class.php');
+
+Mock::generate('lmbValidator', 'MockValidator');
+
+class lmbValidatorBuilderTest extends UnitTestCase
+{
+ var $validator;
+
+ function setUp()
+ {
+ $this->validator = new MockValidator();
+ }
+
+ function testAddRulesFromSimpleString()
+ {
+ $rules = array("login" => "required");
+ $this->validator->expectOnce("addRule", array(new EqualExpectation(new lmbHandle('limb/validation/src/rule/lmbRequiredRule.class.php', array('login')))));
+ lmbValidatorBuilder :: addRules($rules, $this->validator);
+ }
+}
+
+
More information about the limb-svn
mailing list