Skip to content

Commit

Permalink
Added type hinting to Model::validator()
Browse files Browse the repository at this point in the history
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
Thomas Ploch authored and markstory committed Nov 29, 2012
1 parent ffcf71c commit 7f0085c
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 8 deletions.
13 changes: 5 additions & 8 deletions lib/Cake/Model/Model.php
Expand Up @@ -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;
}

Expand Down
27 changes: 27 additions & 0 deletions lib/Cake/Test/Case/Model/ModelValidationTest.php
Expand Up @@ -2115,6 +2115,33 @@ public function testValidator() {
$this->assertTrue($result instanceof CakeValidationSet);
}

/**
* 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
Expand Down

0 comments on commit 7f0085c

Please sign in to comment.