Skip to content

Commit

Permalink
Adding isPresenceRequired and isEmptyAllowed to Validator
Browse files Browse the repository at this point in the history
  • Loading branch information
lorenzo committed Nov 20, 2013
1 parent d279862 commit 6636447
Show file tree
Hide file tree
Showing 2 changed files with 77 additions and 4 deletions.
57 changes: 53 additions & 4 deletions Cake/Test/TestCase/Validation/ValidatorTest.php
Expand Up @@ -104,11 +104,35 @@ public function testValidatePresence() {
$validator->validatePresence('title', false);
$this->assertFalse($validator->field('title')->isPresenceRequired());

$validator->validatePresence('title', 'created');
$this->assertEquals('created', $validator->field('title')->isPresenceRequired());
$validator->validatePresence('title', 'create');
$this->assertEquals('create', $validator->field('title')->isPresenceRequired());

$validator->validatePresence('title', 'updated');
$this->assertEquals('updated', $validator->field('title')->isPresenceRequired());
$validator->validatePresence('title', 'update');
$this->assertEquals('update', $validator->field('title')->isPresenceRequired());
}

/**
* Tests the isPresenceRequired method
*
* @return void
*/
public function testIsPresenceRequired() {
$validator = new Validator;
$this->assertSame($validator, $validator->validatePresence('title'));
$this->assertTrue($validator->isPresenceRequired('title', true));
$this->assertTrue($validator->isPresenceRequired('title', false));

$validator->validatePresence('title', false);
$this->assertFalse($validator->isPresenceRequired('title', true));
$this->assertFalse($validator->isPresenceRequired('title', false));

$validator->validatePresence('title', 'create');
$this->assertTrue($validator->isPresenceRequired('title', true));
$this->assertFalse($validator->isPresenceRequired('title', false));

$validator->validatePresence('title', 'update');
$this->assertTrue($validator->isPresenceRequired('title', false));
$this->assertFalse($validator->isPresenceRequired('title', true));
}

/**
Expand Down Expand Up @@ -149,6 +173,31 @@ public function testAllowEmpty() {
$this->assertEquals('updated', $validator->field('title')->isEmptyAllowed());
}

/**
* Tests the isEmptyAllowed method
*
* @return void
*/
public function testIsEmptyAllowed() {
$validator = new Validator;
$this->assertSame($validator, $validator->allowEmpty('title'));
$this->assertTrue($validator->isEmptyAllowed('title', true));
$this->assertTrue($validator->isEmptyAllowed('title', false));

$validator->allowEmpty('title', false);
$this->assertFalse($validator->isEmptyAllowed('title', true));
$this->assertFalse($validator->isEmptyAllowed('title', false));

$validator->allowEmpty('title', 'create');
$this->assertTrue($validator->isEmptyAllowed('title', true));
$this->assertFalse($validator->isEmptyAllowed('title', false));

$validator->allowEmpty('title', 'update');
$this->assertTrue($validator->isEmptyAllowed('title', false));
$this->assertFalse($validator->isEmptyAllowed('title', true));
}


/**
* Tests errors generated when a field is not allowed to be empty
*
Expand Down
24 changes: 24 additions & 0 deletions Cake/Validation/Validator.php
Expand Up @@ -299,6 +299,30 @@ public function allowEmpty($field, $mode = true) {
return $this;
}

/**
* Returns whether or not a field can be left empty for a new or already existing
* record.
*
* @param string field
* @param boolean $newRecord whether the data to be validated is new or to be updated.
* @return boolean
*/
public function isEmptyAllowed($field, $newRecord) {
return $this->_canBeEmpty($this->field($field), $newRecord);
}

/**
* Returns whether or not a field can be left out for a new or already existing
* record.
*
* @param string field
* @param boolean $newRecord whether the data to be validated is new or to be updated.
* @return boolean
*/
public function isPresenceRequired($field, $newRecord) {
return !$this->_checkPresence($this->field($field), $newRecord);
}

/**
* Returns false if any validation for the passed rule set should be stopped
* due to the field missing in the data array
Expand Down

0 comments on commit 6636447

Please sign in to comment.