Browse Source

Add tests for custom message for `UniqueValidator`

tags/2.0.10
Robert Korulczyk 8 years ago
parent
commit
4fdfbc2739
  1. 36
      tests/framework/validators/UniqueValidatorTest.php

36
tests/framework/validators/UniqueValidatorTest.php

@ -29,6 +29,42 @@ abstract class UniqueValidatorTest extends DatabaseTestCase
$this->assertTrue(is_string($val->message)); $this->assertTrue(is_string($val->message));
} }
public function testCustomMessage()
{
// single attribute
$customError = 'Custom message for Id with value "1"';
$validator = new UniqueValidator([
'message' => 'Custom message for {attribute} with value "{value}"',
]);
$model = new Order();
$model->id = 1;
$validator->validateAttribute($model, 'id');
$this->assertTrue($model->hasErrors('id'));
$this->assertEquals($customError, $model->getFirstError('id'));
// multiple attributes
$customError = 'Custom message for Order Id and Item Id with values "1"-"1"';
$validator = new UniqueValidator([
'targetAttribute' => ['order_id', 'item_id'],
'message' => 'Custom message for {attributes} with values {values}',
]);
$model = OrderItem::findOne(['order_id' => 1, 'item_id' => 2]);
$model->item_id = 1;
$validator->validateAttribute($model, 'order_id');
$this->assertTrue($model->hasErrors('order_id'));
$this->assertEquals($customError, $model->getFirstError('order_id'));
// fallback for deprecated `comboNotUnique` - should be removed on 2.1.0
$validator = new UniqueValidator([
'targetAttribute' => ['order_id', 'item_id'],
'comboNotUnique' => 'Custom message for {attributes} with values {values}',
]);
$model->clearErrors();
$validator->validateAttribute($model, 'order_id');
$this->assertTrue($model->hasErrors('order_id'));
$this->assertEquals($customError, $model->getFirstError('order_id'));
}
public function testValidateInvalidAttribute() public function testValidateInvalidAttribute()
{ {
$validator = new UniqueValidator(); $validator = new UniqueValidator();

Loading…
Cancel
Save