Added validation class testing and fixed some bugs

Amazing that there were as many bugs in there as there were.
This commit is contained in:
Joshua Sherman 2014-01-13 00:24:17 -05:00
parent 9a2d593eff
commit 097911a667
2 changed files with 222 additions and 16 deletions

View file

@ -2,13 +2,200 @@
class ValidateTest extends PHPUnit_Framework_TestCase
{
public function testIsValidTooLong()
public function testFilterBoolean()
{
$variable = 'really long string';
$rules = 'length:16';
Validate::isValid($variable, $rules);
$this->assertTrue(Validate::isValid(true, ['filter:boolean' => 'error']));
}
public function testFilterBooleanError()
{
$this->assertEquals(['error'], Validate::isValid(false, ['filter:boolean' => 'error']));
}
public function testFilterEmail()
{
$this->assertTrue(Validate::isValid('foo@bar.com', ['filter:email' => 'error']));
}
public function testFilterEmailError()
{
$this->assertEquals(['error'], Validate::isValid('invalid', ['filter:email' => 'error']));
}
public function testFilterFloat()
{
$this->assertTrue(Validate::isValid(2.231981, ['filter:float' => 'error']));
}
public function testFilterFloatError()
{
$this->assertEquals(['error'], Validate::isValid('invalid', ['filter:float' => 'error']));
}
public function testFilterInt()
{
$this->assertTrue(Validate::isValid(2231981, ['filter:int' => 'error']));
}
public function testFilterIntError()
{
$this->assertEquals(['error'], Validate::isValid('invalid', ['filter:int' => 'error']));
}
public function testFilterIP()
{
$this->assertTrue(Validate::isValid('2.23.19.81', ['filter:ip' => 'error']));
}
public function testFilterIPError()
{
$this->assertEquals(['error'], Validate::isValid('invalid', ['filter:ip' => 'error']));
}
public function testFilterURL()
{
$this->assertTrue(Validate::isValid('http://foo.com/bar?stuff', ['filter:url' => 'error']));
}
public function testFilterURLError()
{
$this->assertEquals(['error'], Validate::isValid('invalid', ['filter:url' => 'error']));
}
/**
* @expectedException Exception
* @expectedExceptionMessage Invalid validation rule, expected: "validate:boolean|email|float|int|ip|url".
*/
public function testFilterVarInvalidRule()
{
Validate::isValid('value', ['filter' => 'foo']);
}
/**
* @expectedException Exception
* @expectedExceptionMessage Invalid filter, expecting boolean, email, float, int, ip or url.
*/
public function testFilterVarInvalidFilter()
{
Validate::isValid('value', ['filter:foo' => 'bar']);
}
public function testLengthLessThan()
{
$this->assertTrue(Validate::isValid('value', ['length:<:10' => 'error']));
}
public function testLengthLessThanError()
{
$this->assertEquals(['error'], Validate::isValid('value', ['length:<:1' => 'error']));
}
public function testLengthLessThanOrEqual()
{
$this->assertTrue(Validate::isValid('value', ['length:<=:10' => 'error']));
}
public function testLengthLessThanOrEqualError()
{
$this->assertEquals(['error'], Validate::isValid('value', ['length:<=:1' => 'error']));
}
public function testLengthEqual()
{
$this->assertTrue(Validate::isValid('value', ['length:==:5' => 'error']));
}
public function testLengthEqualError()
{
$this->assertEquals(['error'], Validate::isValid('value', ['length:==:1' => 'error']));
}
public function testLengthNotEqual()
{
$this->assertTrue(Validate::isValid('value', ['length:!=:1' => 'error']));
}
public function testLengthNotEqualError()
{
$this->assertEquals(['error'], Validate::isValid('value', ['length:!=:5' => 'error']));
}
public function testLengthGreaterThanOrEqual()
{
$this->assertTrue(Validate::isValid('value', ['length:>=:1' => 'error']));
}
public function testLengthGreaterThanOrEqualError()
{
$this->assertEquals(['error'], Validate::isValid('value', ['length:>=:10' => 'error']));
}
public function testLengthGreaterThan()
{
$this->assertTrue(Validate::isValid('value', ['length:>:1' => 'error']));
}
public function testLengthGreaterThanError()
{
$this->assertEquals(['error'], Validate::isValid('value', ['length:>:10' => 'error']));
}
/**
* @expectedException Exception
* @expectedExceptionMessage Invalid validation rule, expected: "length:<|<=|==|!=|>=|>:integer".
*/
public function testLengthInvalidRule()
{
Validate::isValid('value', ['length:16' => 'bar']);
}
/**
* @expectedException Exception
* @expectedExceptionMessage Invalid length value, expecting an integer.
*/
public function testLengthInvalidLength()
{
Validate::isValid('value', ['length:==:foo' => 'bar']);
}
/**
* @expectedException Exception
* @expectedExceptionMessage Invalid operator, expecting <, <=, ==, !=, >= or >.
*/
public function testLengthInvalidOperator()
{
Validate::isValid('value', ['length:&&:10' => 'foo']);
}
public function testRegexIs()
{
$this->assertTrue(Validate::isValid('value', ['regex:is:/^va7ue$/' => 'error']));
}
public function testRegexIsError()
{
$this->assertEquals(['error'], Validate::isValid('value', ['regex:is:/^value$/' => 'error']));
}
public function testRegexNot()
{
$this->assertTrue(Validate::isValid('value', ['regex:not:/^value$/' => 'error']));
}
public function testRegexNotError()
{
$this->assertEquals(['error'], Validate::isValid('value', ['regex:not:/^va7ue$/' => 'error']));
}
/**
* @expectedException Exception
* @expectedExceptionMessage Invalid validation rule, expected: "regex:is|not:string".
*/
public function testRegexInvalidRule()
{
Validate::isValid('value', ['regex:/foo/' => 'bar']);
}
}
?>