123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199 |
- <?php
- /**
- * CakeValidationRuleTest file
- *
- * PHP 5
- *
- * CakePHP(tm) Tests <http://book.cakephp.org/view/1196/Testing>
- * Copyright 2005-2012, Cake Software Foundation, Inc. (http://cakefoundation.org)
- *
- * Licensed under The MIT License
- * Redistributions of files must retain the above copyright notice
- *
- * @copyright Copyright 2005-2012, Cake Software Foundation, Inc. (http://cakefoundation.org)
- * @link http://book.cakephp.org/view/1196/Testing CakePHP(tm) Tests
- * @package Cake.Test.Case.Model.Validator
- * @since CakePHP(tm) v 2.2.0
- * @license MIT License (http://www.opensource.org/licenses/mit-license.php)
- */
- App::uses('CakeValidationRule', 'Model/Validator');
- /**
- * CakeValidationRuleTest
- *
- * @package Cake.Test.Case.Model.Validator
- */
- class CakeValidationRuleTest extends CakeTestCase {
- /**
- * Auxiliary method to test custom validators
- *
- * @return boolean
- */
- public function myTestRule() {
- return false;
- }
- /**
- * Auxiliary method to test custom validators
- *
- * @return boolean
- */
- public function myTestRule2() {
- return true;
- }
- /**
- * Auxiliary method to test custom validators
- *
- * @return string
- */
- public function myTestRule3() {
- return 'string';
- }
- /**
- * Test isValid method
- *
- * @return void
- */
- public function testIsValid() {
- $def = array('rule' => 'notEmpty', 'message' => 'Can not be empty');
- $data = array(
- 'fieldName' => ''
- );
- $methods = array();
- $Rule = new CakeValidationRule($def);
- $Rule->process('fieldName', $data, $methods);
- $this->assertFalse($Rule->isValid());
- $data = array('fieldName' => 'not empty');
- $Rule->process('fieldName', $data, $methods);
- $this->assertTrue($Rule->isValid());
- }
- /**
- * tests that passing custom validation methods work
- *
- * @return void
- */
- public function testCustomMethods() {
- $def = array('rule' => 'myTestRule');
- $data = array(
- 'fieldName' => 'some data'
- );
- $methods = array('mytestrule' => array($this, 'myTestRule'));
- $Rule = new CakeValidationRule($def);
- $Rule->process('fieldName', $data, $methods);
- $this->assertFalse($Rule->isValid());
- $methods = array('mytestrule' => array($this, 'myTestRule2'));
- $Rule->process('fieldName', $data, $methods);
- $this->assertTrue($Rule->isValid());
- $methods = array('mytestrule' => array($this, 'myTestRule3'));
- $Rule->process('fieldName', $data, $methods);
- $this->assertFalse($Rule->isValid());
- }
- /**
- * Make sure errors are triggered when validation is missing.
- *
- * @expectedException PHPUnit_Framework_Error_Warning
- * @expectedExceptionMessage Could not find validation handler totallyMissing for fieldName
- * @return void
- */
- public function testCustomMethodMissingError() {
- $def = array('rule' => array('totallyMissing'));
- $data = array(
- 'fieldName' => 'some data'
- );
- $methods = array('mytestrule' => array($this, 'myTestRule'));
- $Rule = new CakeValidationRule($def);
- $Rule->process('fieldName', $data, $methods);
- }
- /**
- * Test isRequired method
- *
- * @return void
- */
- public function testIsRequired() {
- $def = array('rule' => 'notEmpty', 'required' => true);
- $Rule = new CakeValidationRule($def);
- $this->assertTrue($Rule->isRequired());
- $def = array('rule' => 'notEmpty', 'required' => false);
- $Rule = new CakeValidationRule($def);
- $this->assertFalse($Rule->isRequired());
- $def = array('rule' => 'notEmpty', 'required' => 'create');
- $Rule = new CakeValidationRule($def);
- $this->assertTrue($Rule->isRequired());
- $def = array('rule' => 'notEmpty', 'required' => 'update');
- $Rule = new CakeValidationRule($def);
- $this->assertFalse($Rule->isRequired());
- $Rule->isUpdate(true);
- $this->assertTrue($Rule->isRequired());
- }
- /**
- * Test isEmptyAllowed method
- *
- * @return void
- */
- public function testIsEmptyAllowed() {
- $def = array('rule' => 'aRule', 'allowEmpty' => true);
- $Rule = new CakeValidationRule($def);
- $this->assertTrue($Rule->isEmptyAllowed());
- $def = array('rule' => 'aRule', 'allowEmpty' => false);
- $Rule = new CakeValidationRule($def);
- $this->assertFalse($Rule->isEmptyAllowed());
- $def = array('rule' => 'notEmpty', 'allowEmpty' => false, 'on' => 'update');
- $Rule = new CakeValidationRule($def);
- $this->assertTrue($Rule->isEmptyAllowed());
- $Rule->isUpdate(true);
- $this->assertFalse($Rule->isEmptyAllowed());
- $def = array('rule' => 'notEmpty', 'allowEmpty' => false, 'on' => 'create');
- $Rule = new CakeValidationRule($def);
- $this->assertFalse($Rule->isEmptyAllowed());
- $Rule->isUpdate(true);
- $this->assertTrue($Rule->isEmptyAllowed());
- }
- /**
- * Test checkRequired method
- *
- * @return void
- */
- public function testCheckRequiredWhenRequiredAndAllowEmpty() {
- $Rule = $this->getMock('CakeValidationRule', array('isRequired'));
- $Rule->expects($this->any())
- ->method('isRequired')
- ->will($this->returnValue(true));
- $Rule->allowEmpty = true;
- $fieldname = 'field';
- $data = array(
- $fieldname => null
- );
- $this->assertFalse($Rule->checkRequired($fieldname, $data), "A null but present field should not fail requirement check if allowEmpty is true");
- $Rule->allowEmpty = false;
- $this->assertTrue($Rule->checkRequired($fieldname, $data), "A null but present field should fail requirement check if allowEmpty is false");
- }
- }
|