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.
75 lines
2.0 KiB
75 lines
2.0 KiB
10 years ago
|
<?php
|
||
|
|
||
|
namespace yiiunit\framework\validators;
|
||
|
|
||
|
use yii\validators\EachValidator;
|
||
|
use yiiunit\data\validators\models\FakedValidationModel;
|
||
|
use yiiunit\TestCase;
|
||
|
|
||
|
/**
|
||
|
* @group validators
|
||
|
*/
|
||
|
class EachValidatorTest extends TestCase
|
||
|
{
|
||
|
protected function setUp()
|
||
|
{
|
||
|
parent::setUp();
|
||
|
$this->mockApplication();
|
||
|
}
|
||
|
|
||
|
public function testArrayFormat()
|
||
|
{
|
||
|
$validator = new EachValidator(['rule' => ['required']]);
|
||
|
|
||
|
$this->assertFalse($validator->validate('not array'));
|
||
|
$this->assertTrue($validator->validate(['value']));
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @depends testArrayFormat
|
||
|
*/
|
||
|
public function testValidate()
|
||
|
{
|
||
|
$validator = new EachValidator(['rule' => ['integer']]);
|
||
|
|
||
|
$this->assertTrue($validator->validate([1, 3, 8]));
|
||
|
$this->assertFalse($validator->validate([1, 'text', 8]));
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @depends testArrayFormat
|
||
|
*/
|
||
|
public function testFilter()
|
||
|
{
|
||
|
$model = FakedValidationModel::createWithAttributes([
|
||
|
'attr_one' => [
|
||
|
' to be trimmed '
|
||
|
],
|
||
|
]);
|
||
|
$validator = new EachValidator(['rule' => ['trim']]);
|
||
|
$validator->validateAttribute($model, 'attr_one');
|
||
|
$this->assertEquals('to be trimmed', $model->attr_one[0]);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @depends testValidate
|
||
|
*/
|
||
|
public function testAllowMessageFromRule()
|
||
|
{
|
||
|
$model = FakedValidationModel::createWithAttributes([
|
||
|
'attr_one' => [
|
||
|
'text'
|
||
|
],
|
||
|
]);
|
||
|
$validator = new EachValidator(['rule' => ['integer']]);
|
||
|
|
||
|
$validator->allowMessageFromRule = true;
|
||
|
$validator->validateAttribute($model, 'attr_one');
|
||
|
$this->assertContains('integer', $model->getFirstError('attr_one'));
|
||
|
|
||
|
$model->clearErrors();
|
||
|
$validator->allowMessageFromRule = false;
|
||
|
$validator->validateAttribute($model, 'attr_one');
|
||
|
$this->assertNotContains('integer', $model->getFirstError('attr_one'));
|
||
|
}
|
||
|
}
|