|  |  |  | <?php
 | 
					
						
							|  |  |  | namespace yiiunit\framework\validators;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | use yiiunit\data\validators\models\FakedValidationModel;
 | 
					
						
							|  |  |  | use yii\validators\BooleanValidator;
 | 
					
						
							|  |  |  | use yiiunit\TestCase;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /**
 | 
					
						
							|  |  |  |  * BooleanValidatorTest
 | 
					
						
							|  |  |  |  */
 | 
					
						
							|  |  |  | class BooleanValidatorTest extends TestCase
 | 
					
						
							|  |  |  | {
 | 
					
						
							|  |  |  | 	protected function setUp()
 | 
					
						
							|  |  |  | 	{
 | 
					
						
							|  |  |  | 		parent::setUp();
 | 
					
						
							|  |  |  | 		$this->mockApplication();
 | 
					
						
							|  |  |  | 	}
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	public function testValidateValue()
 | 
					
						
							|  |  |  | 	{
 | 
					
						
							|  |  |  | 		$val = new BooleanValidator;
 | 
					
						
							|  |  |  | 		$this->assertTrue($val->validate(true));
 | 
					
						
							|  |  |  | 		$this->assertTrue($val->validate(false));
 | 
					
						
							|  |  |  | 		$this->assertTrue($val->validate('0'));
 | 
					
						
							|  |  |  | 		$this->assertTrue($val->validate('1'));
 | 
					
						
							|  |  |  | 		$this->assertFalse($val->validate(null));
 | 
					
						
							|  |  |  | 		$this->assertFalse($val->validate([]));
 | 
					
						
							|  |  |  | 		$val->strict = true;
 | 
					
						
							|  |  |  | 		$this->assertTrue($val->validate('0'));
 | 
					
						
							|  |  |  | 		$this->assertTrue($val->validate('1'));
 | 
					
						
							|  |  |  | 		$this->assertFalse($val->validate(true));
 | 
					
						
							|  |  |  | 		$this->assertFalse($val->validate(false));
 | 
					
						
							|  |  |  | 		$val->trueValue = true;
 | 
					
						
							|  |  |  | 		$val->falseValue = false;
 | 
					
						
							|  |  |  | 		$this->assertFalse($val->validate('0'));
 | 
					
						
							|  |  |  | 		$this->assertFalse($val->validate([]));
 | 
					
						
							|  |  |  | 		$this->assertTrue($val->validate(true));
 | 
					
						
							|  |  |  | 		$this->assertTrue($val->validate(false));
 | 
					
						
							|  |  |  | 	}
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	public function testValidateAttributeAndError()
 | 
					
						
							|  |  |  | 	{
 | 
					
						
							|  |  |  | 		$obj = new FakedValidationModel;
 | 
					
						
							|  |  |  | 		$obj->attrA = true;
 | 
					
						
							|  |  |  | 		$obj->attrB = '1';
 | 
					
						
							|  |  |  | 		$obj->attrC = '0';
 | 
					
						
							|  |  |  | 		$obj->attrD = [];
 | 
					
						
							|  |  |  | 		$val = new BooleanValidator;
 | 
					
						
							|  |  |  | 		$val->validateAttribute($obj, 'attrA');
 | 
					
						
							|  |  |  | 		$this->assertFalse($obj->hasErrors('attrA'));
 | 
					
						
							|  |  |  | 		$val->validateAttribute($obj, 'attrC');
 | 
					
						
							|  |  |  | 		$this->assertFalse($obj->hasErrors('attrC'));
 | 
					
						
							|  |  |  | 		$val->strict = true;
 | 
					
						
							|  |  |  | 		$val->validateAttribute($obj, 'attrB');
 | 
					
						
							|  |  |  | 		$this->assertFalse($obj->hasErrors('attrB'));
 | 
					
						
							|  |  |  | 		$val->validateAttribute($obj, 'attrD');
 | 
					
						
							|  |  |  | 		$this->assertTrue($obj->hasErrors('attrD'));
 | 
					
						
							|  |  |  | 	}
 | 
					
						
							|  |  |  | }
 |