public function testValidateAttribute()
{
$m = FakedValidationModel::createWithAttributes(['attr_one' => ' to be trimmed ', 'attr_two' => 'set this to null', 'attr_empty1' => '', 'attr_empty2' => null, 'attr_array' => ['Maria', 'Anna', 'Elizabeth'], 'attr_array_skipped' => ['John', 'Bill']]);
$val = new FilterValidator(['filter' => 'trim']);
$val->validateAttribute($m, 'attr_one');
$this->assertSame('to be trimmed', $m->attr_one);
$val->filter = function ($value) {
return null;
};
$val->validateAttribute($m, 'attr_two');
$this->assertNull($m->attr_two);
$val->filter = [$this, 'notToBeNull'];
$val->validateAttribute($m, 'attr_empty1');
$this->assertSame($this->notToBeNull(''), $m->attr_empty1);
$val->skipOnEmpty = true;
$val->validateAttribute($m, 'attr_empty2');
$this->assertNotNull($m->attr_empty2);
$val->filter = function ($value) {
return implode(',', $value);
};
$val->skipOnArray = false;
$val->validateAttribute($m, 'attr_array');
$this->assertSame('Maria,Anna,Elizabeth', $m->attr_array);
$val->skipOnArray = true;
$val->validateAttribute($m, 'attr_array_skipped');
$this->assertSame(['John', 'Bill'], $m->attr_array_skipped);
}