mockApplication(); } public function testValidateValue() { $val = new StringValidator(); $this->assertFalse($val->validateValue(array('not a string'))); $this->assertTrue($val->validateValue('Just some string')); } public function testValidateValueLength() { $val = new StringValidator(array('length' => 25)); $this->assertTrue($val->validateValue(str_repeat('x', 25))); $this->assertTrue($val->validateValue(str_repeat('€', 25))); $this->assertFalse($val->validateValue(str_repeat('x', 125))); $this->assertFalse($val->validateValue('')); $val = new StringValidator(array('length' => array(25))); $this->assertTrue($val->validateValue(str_repeat('x', 25))); $this->assertTrue($val->validateValue(str_repeat('x', 1250))); $this->assertFalse($val->validateValue(str_repeat('Ä', 24))); $this->assertFalse($val->validateValue('')); $val = new StringValidator(array('length' => array(10, 20))); $this->assertTrue($val->validateValue(str_repeat('x', 15))); $this->assertTrue($val->validateValue(str_repeat('x', 10))); $this->assertTrue($val->validateValue(str_repeat('x', 20))); $this->assertFalse($val->validateValue(str_repeat('x', 5))); $this->assertFalse($val->validateValue(str_repeat('x', 25))); $this->assertFalse($val->validateValue('')); // make sure min/max are overridden $val = new StringValidator(array('length' => array(10, 20), 'min' => 25, 'max' => 35)); $this->assertTrue($val->validateValue(str_repeat('x', 15))); $this->assertFalse($val->validateValue(str_repeat('x', 30))); } public function testValidateValueMinMax() { $val = new StringValidator(array('min' => 10)); $this->assertTrue($val->validateValue(str_repeat('x', 10))); $this->assertFalse($val->validateValue('xxxx')); $val = new StringValidator(array('max' => 10)); $this->assertTrue($val->validateValue('xxxx')); $this->assertFalse($val->validateValue(str_repeat('y', 20))); $val = new StringValidator(array('min' => 10, 'max' => 20)); $this->assertTrue($val->validateValue(str_repeat('y', 15))); $this->assertFalse($val->validateValue('abc')); $this->assertFalse($val->validateValue(str_repeat('b', 25))); } public function testValidateAttribute() { $val = new StringValidator(); $model = new FakedValidationModel(); $model->attr_string = 'a tet string'; $val->validateAttribute($model, 'attr_string'); $this->assertFalse($model->hasErrors()); $val = new StringValidator(array('length' => 20)); $model = new FakedValidationModel(); $model->attr_string = str_repeat('x', 20); $val->validateAttribute($model, 'attr_string'); $this->assertFalse($model->hasErrors()); $model = new FakedValidationModel(); $model->attr_string = 'abc'; $val->validateAttribute($model, 'attr_string'); $this->assertTrue($model->hasErrors('attr_string')); $val = new StringValidator(array('max' => 2)); $model = new FakedValidationModel(); $model->attr_string = 'a'; $val->validateAttribute($model, 'attr_string'); $this->assertFalse($model->hasErrors()); $model = new FakedValidationModel(); $model->attr_string = 'abc'; $val->validateAttribute($model, 'attr_string'); $this->assertTrue($model->hasErrors('attr_string')); } public function testEnsureMessagesOnInit() { $val = new StringValidator(array('min' => 1, 'max' => 2)); $this->assertTrue(is_string($val->message)); $this->assertTrue(is_string($val->tooLong)); $this->assertTrue(is_string($val->tooShort)); } public function testCustomErrorMessageInValidateAttribute() { $val = new StringValidator(array( 'min' => 5, 'tooShort' => '{attribute} to short. Min is {min}', )); $model = new FakedValidationModel(); $model->attr_string = 'abc'; $val->validateAttribute($model, 'attr_string'); $this->assertTrue($model->hasErrors('attr_string')); $this->assertEquals('attr_string to short. Min is 5', $model->getErrors('attr_string')[0]); } }