From 7f0085cd4e128e292642f1c45f94b06f54db4675 Mon Sep 17 00:00:00 2001 From: Thomas Ploch Date: Tue, 27 Nov 2012 08:15:23 +0100 Subject: [PATCH] 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() --- lib/Cake/Model/Model.php | 13 ++++----- .../Test/Case/Model/ModelValidationTest.php | 27 +++++++++++++++++++ 2 files changed, 32 insertions(+), 8 deletions(-) diff --git a/lib/Cake/Model/Model.php b/lib/Cake/Model/Model.php index c16ebbd2b01..8a67de012ec 100644 --- a/lib/Cake/Model/Model.php +++ b/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; } diff --git a/lib/Cake/Test/Case/Model/ModelValidationTest.php b/lib/Cake/Test/Case/Model/ModelValidationTest.php index 7360a783784..743b965d308 100644 --- a/lib/Cake/Test/Case/Model/ModelValidationTest.php +++ b/lib/Cake/Test/Case/Model/ModelValidationTest.php @@ -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