| 
<?php
 namespace WikiChua\FlexValidator
 {
 require __dir__.'/../vendor/autoload.php';
 
 class ValidatorTest extends \PHPUnit_Framework_TestCase
 {
 public function testCanMakeValidation()
 {
 $Inputs = [
 'username' => '',
 ];
 
 $Rules = [
 'username' => [
 'required',
 'same' => '3',
 'between' => [1,5],
 ],
 ];
 
 $Messages = [
 'username' => [
 'same' => ':field must be same as :attribute',
 'between' => ':field must be between :attribute_1 and :attribute_2',
 ],
 ];
 
 $valid = Validator::make($Inputs,$Rules,$Messages);
 $this->assertCount(1,$valid->getErrors());
 }
 
 public function testAbleToSetAndGetError()
 {
 $valid = Validator::make([],[],[]);
 $valid->setError('test','Testing is done');
 $errors = $valid->getErrors();
 $this->assertCount(1, $errors);
 $this->assertSame('Testing is done', $errors['test']);
 $errors = $valid->getErrors('test');
 $this->assertSame('Testing is done', $errors);
 }
 
 public function testAbleToExtendsNewRule()
 {
 Validator::extend('stupid',function($fieldname, $fieldvalue, $attributes){
 return $fieldvalue == $attributes;
 },":field must be :attribute ok?");
 }
 
 public function testCanUseExtendedRule()
 {
 $Inputs = [
 'username' => '',
 ];
 
 $Rules = [
 'username' => [
 'required',
 'same' => '3',
 'between' => [1,5],
 'stupid' => 'STUPID',
 ],
 ];
 
 $valid = Validator::make($Inputs,$Rules);
 $this->assertCount(1, $valid->getErrors());
 }
 
 public function testCanUseExtendedRuleMessage()
 {
 $Inputs = [
 'username' => '',
 ];
 
 $Rules = [
 'username' => [
 'required',
 'same' => '3',
 'between' => [1,5],
 'stupid' => 'STUPID',
 ],
 ];
 
 $Messages = [
 'username' => [
 'stupid' => ':field must be :attribute',
 ],
 ];
 
 $valid = Validator::make($Inputs,$Rules,$Messages);
 $this->assertCount(1, $valid->getErrors());
 }
 
 public function testConfirmInput()
 {
 $Inputs = [
 'password' => '3',
 'password_confirmation' => 'e',
 'text1' => '',
 'text2' => 'f',
 ];
 
 $Rules = [
 'password' => [
 'required',
 'confirmed',
 ],
 'password_confirmation' => [
 'required',
 ],
 'text1' => [
 'required',
 'confirmed' => 'text2',
 ],
 ];
 
 $Messages = [
 'password' => [
 'confirmed' => ':field must be confirmed ok??',
 ],
 ];
 
 $valid = Validator::make($Inputs,$Rules,$Messages);
 $this->assertCount(2, $valid->getErrors());
 }
 
 public function testAllFail()
 {
 $Inputs = [
 'password' => '1',
 'password_confirmation' => '3',
 'text1' => 'f',
 'text2' => 'f',
 'text3' => 'nothing same',
 'middletext' => 9,
 'tnc' => 0,
 'homepage2' => 'http::/nobody.com',
 'afterdate' => date('Y-m-d'),
 'beforedate' => date('Y-m-d'),
 'name' => 'asd312',
 'username' => 'asd123_-*/123',
 'username2' => 'asd123@#123',
 'birthdate' => "2012-02-31",
 'birthdate2' => "2012-02-27",
 'toto' => 123,
 '6d' => 123,
 'emailaddress' => 'email#opps.what?',
 'gender' => 'trans',
 'num' => 'a',
 'myip' => '1000.11.22.00.22',
 'num1' => '1',
 'num2' => '100',
 'agerange' => 18,
 'regextext' => 'asd',
 ];
 
 $Rules = [
 'password' => [
 'required',
 'confirmed' => 'password_confirmation',
 ],
 'password_confirmation' => [
 'required',
 ],
 'text1' => [
 'required',
 'different' => 'text2',
 ],
 'text3' => [
 'same' => 'something same',
 ],
 'middletext' => [
 'between' => [10,20],
 ],
 'tnc' => [
 'accepted',
 ],
 'homepage2' => [
 'url',
 ],
 'afterdate' => [
 'after' => date('Y').'-'.date('m').'-'.(date('d') + 1),
 ],
 'beforedate' => [
 'before' => date('Y').'-'.date('m').'-'.(date('d') - 1),
 ],
 'name' => [
 'alpha',
 ],
 'username' => [
 'alpha_num',
 ],
 'username2' => [
 'alpha_dash',
 ],
 'birthdate' => [
 'isDate',
 ],
 'birthdate2' => [
 'date_format' => 'd/M/Y',
 ],
 'toto' => [
 'digits' => 4,
 ],
 '6d' => [
 'digits_between' => [4,6],
 ],
 'emailaddress' => [
 'email',
 ],
 'gender' => [
 'in' => 'male,female',
 ],
 'num' => [
 'integer',
 ],
 'myip' => [
 'ip',
 ],
 'num1' => [
 'min' => 2,
 ],
 'num2' => [
 'max' => 99,
 ],
 'agerange' => [
 'not_in' => [10,18,20,21],
 ],
 'regextext' => [
 'regex' => '/\d+/i',
 ],
 ];
 
 $valid = Validator::make($Inputs,$Rules);
 
 
 $this->assertTrue($valid->fail());
 }
 
 public function testAllPass()
 {
 $Inputs = [
 'password' => '3',
 'password_confirmation' => '3',
 'text1' => '2',
 'text2' => 'f',
 'text3' => 'something same',
 'middletext' => 15,
 'tnc' => 1,
 'homepage2' => 'http://wikichua.com',
 'afterdate' => date('Y').'-'.date('m').'-'.(date('d') + 3),
 'beforedate' => date('Y').'-'.date('m').'-'.(date('d') - 1),
 'name' => 'wikichua',
 'username' => 'asd123',
 'username2' => 'asd123-_123',
 'birthdate' => "1983-01-07",
 'birthdate2' => "07/01/1983",
 'toto' => 1234,
 '6d' => 123456,
 'emailaddress' => '[email protected]',
 'gender' => 'male',
 'num' => 31,
 'myip' => '172.0.0.1',
 'num1' => 3,
 'num2' => 98,
 'agerange' => 31,
 'regextext' => 1983,
 ];
 
 $Rules = [
 'password' => [
 'required',
 'confirmed' => 'password_confirmation',
 ],
 'password_confirmation' => [
 'required',
 ],
 'text1' => [
 'required',
 'different' => 'text2',
 ],
 'text3' => [
 'same' => 'something same',
 ],
 'middletext' => [
 'between' => [10,20],
 ],
 'tnc' => [
 'accepted',
 ],
 'homepage2' => [
 'url',
 ],
 'afterdate' => [
 'after' => date('Y').'-'.date('m').'-'.(date('d') + 1),
 ],
 'beforedate' => [
 'before' => date('Y').'-'.date('m').'-'.(date('d') - 1),
 ],
 'name' => [
 'alpha',
 ],
 'username' => [
 'alpha_num',
 ],
 'username2' => [
 'alpha_dash',
 ],
 'birthdate' => [
 'isDate',
 ],
 'birthdate2' => [
 'date_format' => 'd/m/Y',
 ],
 'toto' => [
 'digits' => 4,
 ],
 '6d' => [
 'digits_between' => [4,6],
 ],
 'emailaddress' => [
 'email',
 ],
 'gender' => [
 'in' => 'male,female',
 ],
 'num' => [
 'integer',
 ],
 'myip' => [
 'ip',
 ],
 'num1' => [
 'min' => 2,
 ],
 'num2' => [
 'max' => 99,
 ],
 'agerange' => [
 'not_in' => [10,18,20,21],
 ],
 'regextext' => [
 'regex' => '/\d+/i',
 ],
 ];
 
 $valid = Validator::make($Inputs,$Rules);
 
 $this->assertTrue($valid->fail());
 }
 }
 }
 
 |