From 4fdfbc2739a4c1532a324a04d86a32f9cf104f9d Mon Sep 17 00:00:00 2001 From: Robert Korulczyk Date: Wed, 24 Aug 2016 22:44:19 +0200 Subject: [PATCH] Add tests for custom message for `UniqueValidator` --- tests/framework/validators/UniqueValidatorTest.php | 36 ++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/tests/framework/validators/UniqueValidatorTest.php b/tests/framework/validators/UniqueValidatorTest.php index ceb01f7..19affb9 100644 --- a/tests/framework/validators/UniqueValidatorTest.php +++ b/tests/framework/validators/UniqueValidatorTest.php @@ -29,6 +29,42 @@ abstract class UniqueValidatorTest extends DatabaseTestCase $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() { $validator = new UniqueValidator();