Browse files

Merge branch '2.2-validatorrules' into 2.2

  • Loading branch information...
2 parents 3908f06 + 71112d1 commit 2f5f1b28bc90ae3487ad5e757edd22ff38630488 @ceeram ceeram committed Jun 20, 2012
View
2 lib/Cake/Model/Model.php
@@ -3396,7 +3396,7 @@ public function validator($instance = null) {
return $this->_validator = $instance;
}
- if (is_null($instance)) {
+ if (empty($this->_validator) && is_null($instance)) {
$this->_validator = new ModelValidator($this);
}
View
1 lib/Cake/Model/ModelValidator.php
@@ -304,6 +304,7 @@ public function getMethods() {
* @return CakeValidationSet|array
*/
public function getField($name = null) {
+ $this->_parseRules();
if ($name !== null && !empty($this->_fields[$name])) {
return $this->_fields[$name];
} elseif ($name !== null) {
View
18 lib/Cake/Test/Case/Model/ModelValidationTest.php
@@ -2088,6 +2088,24 @@ public function testAddMultipleRules() {
}
/**
+ * Test that rules are parsed correctly when calling getField()
+ *
+ * @return void
+ */
+ public function testValidator() {
+ $TestModel = new Article();
+ $Validator = $TestModel->validator();
+
+ $result = $Validator->getField();
+ $expected = array('user_id', 'title', 'body');
+ $this->assertEquals($expected, array_keys($result));
+ $this->assertTrue($result['user_id'] instanceof CakeValidationSet);
+
+ $result = $TestModel->validator()->getField('title');
+ $this->assertTrue($result instanceof CakeValidationSet);
+ }
+
+/**
* Tests that altering data in a beforeValidate callback will lead to saving those
* values in database, this time with belongsTo associations
*

0 comments on commit 2f5f1b2

Please sign in to comment.