You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
116 lines
4.3 KiB
116 lines
4.3 KiB
<?php |
|
|
|
namespace yiiunit\framework\validators; |
|
|
|
|
|
use yii\validators\StringValidator; |
|
use yiiunit\data\validators\models\FakedValidationModel; |
|
use yiiunit\TestCase; |
|
|
|
class StringValidatorTest extends TestCase |
|
{ |
|
public function setUp() |
|
{ |
|
parent::setUp(); |
|
$this->mockApplication(); |
|
} |
|
|
|
public function testValidateValue() |
|
{ |
|
$val = new StringValidator(); |
|
$this->assertFalse($val->validateValue(['not a string'])); |
|
$this->assertTrue($val->validateValue('Just some string')); |
|
} |
|
|
|
public function testValidateValueLength() |
|
{ |
|
$val = new StringValidator(['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(['length' => [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(['length' => [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(['length' => [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(['min' => 10]); |
|
$this->assertTrue($val->validateValue(str_repeat('x', 10))); |
|
$this->assertFalse($val->validateValue('xxxx')); |
|
$val = new StringValidator(['max' => 10]); |
|
$this->assertTrue($val->validateValue('xxxx')); |
|
$this->assertFalse($val->validateValue(str_repeat('y', 20))); |
|
$val = new StringValidator(['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(['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(['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')); |
|
$val = new StringValidator(['max' => 1]); |
|
$model = FakedValidationModel::createWithAttributes(['attr_str' => ['abc']]); |
|
$val->validateAttribute($model, 'attr_str'); |
|
$this->assertTrue($model->hasErrors('attr_str')); |
|
} |
|
|
|
public function testEnsureMessagesOnInit() |
|
{ |
|
$val = new StringValidator(['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([ |
|
'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')); |
|
$errorMsg = $model->getErrors('attr_string'); |
|
$this->assertEquals('attr_string to short. Min is 5', $errorMsg[0]); |
|
} |
|
} |