specify('expected error if passed empty value', function() { $validator = new UuidValidator(); $model = $this->createModel(); $validator->validateAttribute($model, 'attribute'); $this->assertTrue($model->hasErrors()); $this->assertSame(['Attribute must be valid uuid'], $model->getErrors('attribute')); }); $this->specify('expected error if passed invalid string', function() { $validator = new UuidValidator(); $model = $this->createModel(); $model->attribute = '123456789'; $validator->validateAttribute($model, 'attribute'); $this->assertTrue($model->hasErrors()); $this->assertSame(['Attribute must be valid uuid'], $model->getErrors('attribute')); }); $this->specify('no errors if passed nil uuid and allowNil is set to true', function() { $validator = new UuidValidator(); $model = $this->createModel(); $model->attribute = '00000000-0000-0000-0000-000000000000'; $validator->validateAttribute($model, 'attribute'); $this->assertFalse($model->hasErrors()); }); $this->specify('no errors if passed nil uuid and allowNil is set to false', function() { $validator = new UuidValidator(); $validator->allowNil = false; $model = $this->createModel(); $model->attribute = '00000000-0000-0000-0000-000000000000'; $validator->validateAttribute($model, 'attribute'); $this->assertTrue($model->hasErrors()); $this->assertSame(['Attribute must be valid uuid'], $model->getErrors('attribute')); }); $this->specify('no errors if passed valid uuid', function() { $validator = new UuidValidator(); $model = $this->createModel(); $model->attribute = Uuid::uuid(); $validator->validateAttribute($model, 'attribute'); $this->assertFalse($model->hasErrors()); }); $this->specify('no errors if passed uuid string without dashes and converted to standart value', function() { $validator = new UuidValidator(); $model = $this->createModel(); $originalUuid = Uuid::uuid(); $model->attribute = str_replace('-', '', $originalUuid); $validator->validateAttribute($model, 'attribute'); $this->assertFalse($model->hasErrors()); $this->assertSame($originalUuid, $model->attribute); }); } /** * @return Model */ public function createModel() { return new class extends Model { public $attribute; }; } }