Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Added type hinting to Model::validator()

Added missing param and fixed typo in method's phpdoc.

Used 'assertSame' and 'assertNotSame'. Removed piped NULL type from phpdoc.

Simplify condition in Model::validator()
  • Loading branch information...
commit 7f0085cd4e128e292642f1c45f94b06f54db4675 1 parent ffcf71c
@tPl0ch tPl0ch authored markstory committed
View
13 lib/Cake/Model/Model.php
@@ -3424,21 +3424,18 @@ protected function _clearCache($type = null) {
}
/**
- * Retunrs an instance of a model validator for this class
+ * Returns an instance of a model validator for this class
*
* @param ModelValidator Model validator instance.
* If null a new ModelValidator instance will be made using current model object
* @return ModelValidator
*/
- public function validator($instance = null) {
- if ($instance instanceof ModelValidator) {
- return $this->_validator = $instance;
- }
-
- if (empty($this->_validator) && is_null($instance)) {
+ public function validator(ModelValidator $instance = null) {
+ if ($instance) {
+ $this->_validator = $instance;
+ } elseif (!$this->_validator) {
$this->_validator = new ModelValidator($this);
}
-
return $this->_validator;
}
View
27 lib/Cake/Test/Case/Model/ModelValidationTest.php
@@ -2116,6 +2116,33 @@ public function testValidator() {
}
/**
+ * Test that validator override works as expected
+ *
+ * @return void
+ */
+ public function testValidatorOverride() {
+ $TestModel = new Article();
+ $ValidatorA = new ModelValidator($TestModel);
+ $ValidatorB = new ModelValidator($TestModel);
+
+ $TestModel->validator($ValidatorA);
+ $TestModel->validator($ValidatorB);
+
+ $this->assertSame($ValidatorB, $TestModel->validator());
+ $this->assertNotSame($ValidatorA, $TestModel->validator());
+ }
+
+/**
+ * Test that type hint exception is thrown
+ *
+ * @expectedException PHPUnit_Framework_Error
+ * @return void
+ */
+ public function testValidatorTypehintException() {
+ $Validator = new ModelValidator('asdasds');
+ }
+
+/**
* Tests that altering data in a beforeValidate callback will lead to saving those
* values in database, this time with belongsTo associations
*
Please sign in to comment.
Something went wrong with that request. Please try again.