From 0f96c883bc98904f83cd2ac4518ca2eda0f47859 Mon Sep 17 00:00:00 2001 From: Vance Lucas Date: Wed, 7 Aug 2013 18:14:09 -0500 Subject: [PATCH] Add test coverage for 'addRule' method --- tests/Valitron/Validate.php | 73 +++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) diff --git a/tests/Valitron/Validate.php b/tests/Valitron/Validate.php index 6516007..0bd3f82 100644 --- a/tests/Valitron/Validate.php +++ b/tests/Valitron/Validate.php @@ -510,5 +510,78 @@ class ValidateTest extends \PHPUnit_Framework_TestCase $this->assertEquals($v1->errors(), $v2->errors()); } + + /** + * Custom rules and callbacks + */ + + public function testAddRuleClosure() + { + $v = new Validator(array('name' => 'Chester Tester')); + $v->addRule('testRule', function() { return true; }); + $v->rule('testRule', 'name'); + $this->assertTrue($v->validate()); + } + + public function testAddRuleClosureReturnsFalse() + { + $v = new Validator(array('name' => 'Chester Tester')); + $v->addRule('testRule', function() { return false; }); + $v->rule('testRule', 'name'); + $this->assertFalse($v->validate()); + } + + public function testAddRuleClosureWithFieldArray() + { + $v = new Validator(array('name' => 'Chester Tester', 'email' => 'foo@example.com')); + $v->addRule('testRule', function() { return true; }); + $v->rule('testRule', array('name', 'email')); + $this->assertTrue($v->validate()); + } + + public function testAddRuleClosureWithArrayAsExtraParameter() + { + $v = new Validator(array('name' => 'Chester Tester')); + $v->addRule('testRule', function() { return true; }); + $v->rule('testRule', 'name', array('foo', 'bar')); + $this->assertTrue($v->validate()); + } + + public function testAddRuleCallback() + { + $v = new Validator(array('name' => 'Chester Tester')); + $v->addRule('testRule', 'sampleFunctionCallback'); + $v->rule('testRule', 'name'); + $this->assertTrue($v->validate()); + } + + public function sampleObjectCallback() { return true; } + public function sampleObjectCallbackFalse() { return false; } + public function testAddRuleCallbackArray() + { + $v = new Validator(array('name' => 'Chester Tester')); + $v->addRule('testRule', array($this, 'sampleObjectCallback')); + $v->rule('testRule', 'name'); + $this->assertTrue($v->validate()); + } + + public function testAddRuleCallbackArrayWithArrayAsExtraParameter() + { + $v = new Validator(array('name' => 'Chester Tester')); + $v->addRule('testRule', array($this, 'sampleObjectCallback')); + $v->rule('testRule', 'name', array('foo', 'bar')); + $this->assertTrue($v->validate()); + } + + public function testAddRuleCallbackArrayWithArrayAsExtraParameterAndCustomMessage() + { + $v = new Validator(array('name' => 'Chester Tester')); + $v->addRule('testRule', array($this, 'sampleObjectCallbackFalse')); + $v->rule('testRule', 'name', array('foo', 'bar'))->message('Invalid name selected.'); + $this->assertFalse($v->validate()); + } } +function sampleFunctionCallback($field, $value, array $params) { + return true; +}