Files
yii2/tests/framework/validators/RangeValidatorTest.php
Robert Korulczyk ba0ab403b5 Added php-cs-fixer coding standards validation to Travis CI (#14100)
* php-cs-fixer: PSR2 rule.

* php-cs-fixer: PSR2 rule - fix views.

* Travis setup refactoring.

* Add php-cs-fixer to travis cs tests.

* Fix tests on hhvm-3.12

* improve travis config

* composer update

* revert composer update

* improve travis config

* Fix CS.

* Extract config to separate classes.

* Extract config to separate classes.

* Add file header.

* Force short array syntax.

* binary_operator_spaces fixer

* Fix broken tests

* cast_spaces fixer

* concat_space fixer

* dir_constant fixer

* ereg_to_preg fixer

* function_typehint_space fixer

* hash_to_slash_comment fixer

* is_null fixer

* linebreak_after_opening_tag fixer

* lowercase_cast fixer

* magic_constant_casing fixer

* modernize_types_casting fixer

* native_function_casing fixer

* new_with_braces fixer

* no_alias_functions fixer

* no_blank_lines_after_class_opening fixer

* no_blank_lines_after_phpdoc fixer

* no_empty_comment fixer

* no_empty_phpdoc fixer

* no_empty_statement fixer

* no_extra_consecutive_blank_lines fixer

* no_leading_import_slash fixer

* no_leading_namespace_whitespace fixer

* no_mixed_echo_print fixer

* no_multiline_whitespace_around_double_arrow fixer

* no_multiline_whitespace_before_semicolons fixer

* no_php4_constructor fixer

* no_short_bool_cast fixer

* no_singleline_whitespace_before_semicolons fixer

* no_spaces_around_offset fixer

* no_trailing_comma_in_list_call fixer

* no_trailing_comma_in_singleline_array fixer

* no_unneeded_control_parentheses fixer

* no_unused_imports fixer

* no_useless_return fixer

* no_whitespace_before_comma_in_array fixer

* no_whitespace_in_blank_line fixer

* not_operator_with_successor_space fixer

* object_operator_without_whitespace fixer

* ordered_imports fixer

* php_unit_construct fixer

* php_unit_dedicate_assert fixer

* php_unit_fqcn_annotation fixer

* phpdoc_indent fixer

* phpdoc_no_access fixer

* phpdoc_no_empty_return fixer

* phpdoc_no_package fixer

* phpdoc_no_useless_inheritdoc fixer

* Fix broken tests

* phpdoc_return_self_reference fixer

* phpdoc_single_line_var_spacing fixer

* phpdoc_single_line_var_spacing fixer

* phpdoc_to_comment fixer

* phpdoc_trim fixer

* phpdoc_var_without_name fixer

* psr4 fixer

* self_accessor fixer

* short_scalar_cast fixer

* single_blank_line_before_namespace fixer

* single_quote fixer

* standardize_not_equals fixer

* ternary_operator_spaces fixer

* trailing_comma_in_multiline_array fixer

* trim_array_spaces fixer

* protected_to_private fixer

* unary_operator_spaces fixer

* whitespace_after_comma_in_array fixer

* `parent::setRules()` -> `$this->setRules()`

* blank_line_after_opening_tag fixer

* Update finder config.

* Revert changes for YiiRequirementChecker.

* Fix array formatting.

* Add missing import.

* Fix CS for new code merged from master.

* Fix some indentation issues.
2017-06-12 12:25:45 +03:00

149 lines
5.0 KiB
PHP

<?php
/**
* @link http://www.yiiframework.com/
* @copyright Copyright (c) 2008 Yii Software LLC
* @license http://www.yiiframework.com/license/
*/
namespace yiiunit\framework\validators;
use yii\validators\RangeValidator;
use yiiunit\data\validators\models\FakedValidationModel;
use yiiunit\TestCase;
/**
* @group validators
*/
class RangeValidatorTest extends TestCase
{
protected function setUp()
{
parent::setUp();
// destroy application, Validator must work without Yii::$app
$this->destroyApplication();
}
public function testInitException()
{
$this->expectException('yii\base\InvalidConfigException');
$this->expectExceptionMessage('The "range" property must be set.');
new RangeValidator(['range' => 'not an array']);
}
public function testAssureMessageSetOnInit()
{
$val = new RangeValidator(['range' => []]);
$this->assertInternalType('string', $val->message);
}
public function testValidateValue()
{
$val = new RangeValidator(['range' => range(1, 10, 1)]);
$this->assertTrue($val->validate(1));
$this->assertFalse($val->validate(0));
$this->assertFalse($val->validate(11));
$this->assertFalse($val->validate(5.5));
$this->assertTrue($val->validate(10));
$this->assertTrue($val->validate('10'));
$this->assertTrue($val->validate('5'));
}
public function testValidateValueEmpty()
{
$val = new RangeValidator(['range' => range(10, 20, 1), 'skipOnEmpty' => false]);
$this->assertFalse($val->validate(null)); //row RangeValidatorTest.php:101
$this->assertFalse($val->validate('0'));
$this->assertFalse($val->validate(0));
$this->assertFalse($val->validate(''));
$val->allowArray = true;
$this->assertTrue($val->validate([]));
}
public function testValidateArrayValue()
{
$val = new RangeValidator(['range' => range(1, 10, 1)]);
$val->allowArray = true;
$this->assertTrue($val->validate([1, 2, 3, 4, 5]));
$this->assertTrue($val->validate([6, 7, 8, 9, 10]));
$this->assertFalse($val->validate([0, 1, 2]));
$this->assertFalse($val->validate([10, 11, 12]));
$this->assertTrue($val->validate(['1', '2', '3', 4, 5, 6]));
}
public function testValidateValueStrict()
{
$val = new RangeValidator(['range' => range(1, 10, 1), 'strict' => true]);
$this->assertTrue($val->validate(1));
$this->assertTrue($val->validate(5));
$this->assertTrue($val->validate(10));
$this->assertFalse($val->validate('1'));
$this->assertFalse($val->validate('10'));
$this->assertFalse($val->validate('5.5'));
}
public function testValidateArrayValueStrict()
{
$val = new RangeValidator(['range' => range(1, 10, 1), 'strict' => true]);
$val->allowArray = true;
$this->assertFalse($val->validate(['1', '2', '3', '4', '5', '6']));
$this->assertFalse($val->validate(['1', '2', '3', 4, 5, 6]));
}
public function testValidateValueNot()
{
$val = new RangeValidator(['range' => range(1, 10, 1), 'not' => true]);
$this->assertFalse($val->validate(1));
$this->assertTrue($val->validate(0));
$this->assertTrue($val->validate(11));
$this->assertTrue($val->validate(5.5));
$this->assertFalse($val->validate(10));
$this->assertFalse($val->validate('10'));
$this->assertFalse($val->validate('5'));
}
public function testValidateAttribute()
{
$val = new RangeValidator(['range' => range(1, 10, 1)]);
$m = FakedValidationModel::createWithAttributes(['attr_r1' => 5, 'attr_r2' => 999]);
$val->validateAttribute($m, 'attr_r1');
$this->assertFalse($m->hasErrors());
$val->validateAttribute($m, 'attr_r2');
$this->assertTrue($m->hasErrors('attr_r2'));
$err = $m->getErrors('attr_r2');
$this->assertNotFalse(stripos($err[0], 'attr_r2'));
}
public function testValidateSubsetArrayable()
{
// Test in array, values are arrays. IE: ['a'] in [['a'], ['b']]
$val = new RangeValidator([
'range' => [['a'], ['b']],
'allowArray' => false,
]);
$this->assertTrue($val->validate(['a']));
// Test in array, values are arrays. IE: ['a', 'b'] subset [['a', 'b', 'c']
$val = new RangeValidator([
'range' => ['a', 'b', 'c'],
'allowArray' => true,
]);
$this->assertTrue($val->validate(['a', 'b']));
// Test in array, values are arrays. IE: ['a', 'b'] subset [['a', 'b', 'c']
$val = new RangeValidator([
'range' => ['a', 'b', 'c'],
'allowArray' => true,
]);
$this->assertTrue($val->validate(new \ArrayObject(['a', 'b'])));
// Test range as ArrayObject.
$val = new RangeValidator([
'range' => new \ArrayObject(['a', 'b']),
'allowArray' => false,
]);
$this->assertTrue($val->validate('a'));
}
}