Login   Register  
PHP Classes
elePHPant
Icontem

File: test/ValidatorTest.php

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of wiki chua  >  Flex Validator  >  test/ValidatorTest.php  >  Download  
File: test/ValidatorTest.php
Role: Unit test script
Content type: text/plain
Description: Unit test script
Class: Flex Validator
Validate request values based on extensible rules
Author: By
Last change:
Date: 4 months ago
Size: 7,818 bytes
 

Contents

Class file image Download
<?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' => 'wikichua@gmail.com',
                
'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());
        }
    }
}