[Validator] Fix annotation default for @Count and @Length

This commit is contained in:
Valentin Udaltsov 2019-03-28 02:59:01 +03:00 committed by Fabien Potencier
parent c79e52aa7b
commit 7bfb8c1a4c
4 changed files with 25 additions and 1 deletions

View File

@ -43,6 +43,9 @@ class Count extends Constraint
'min' => $options,
'max' => $options,
];
} elseif (\is_array($options) && isset($options['value']) && !isset($options['min']) && !isset($options['max'])) {
$options['min'] = $options['max'] = $options['value'];
unset($options['value']);
}
parent::__construct($options);

View File

@ -47,6 +47,9 @@ class Length extends Constraint
'min' => $options,
'max' => $options,
];
} elseif (\is_array($options) && isset($options['value']) && !isset($options['min']) && !isset($options['max'])) {
$options['min'] = $options['max'] = $options['value'];
unset($options['value']);
}
parent::__construct($options);

View File

@ -195,4 +195,13 @@ abstract class CountValidatorTest extends ConstraintValidatorTestCase
$this->assertEquals(5, $constraint->min);
$this->assertEquals(5, $constraint->max);
}
public function testConstraintAnnotationDefaultOption()
{
$constraint = new Count(['value' => 5, 'exactMessage' => 'message']);
$this->assertEquals(5, $constraint->min);
$this->assertEquals(5, $constraint->max);
$this->assertEquals('message', $constraint->exactMessage);
}
}

View File

@ -237,11 +237,20 @@ class LengthValidatorTest extends ConstraintValidatorTestCase
}
}
public function testConstraintGetDefaultOption()
public function testConstraintDefaultOption()
{
$constraint = new Length(5);
$this->assertEquals(5, $constraint->min);
$this->assertEquals(5, $constraint->max);
}
public function testConstraintAnnotationDefaultOption()
{
$constraint = new Length(['value' => 5, 'exactMessage' => 'message']);
$this->assertEquals(5, $constraint->min);
$this->assertEquals(5, $constraint->max);
$this->assertEquals('message', $constraint->exactMessage);
}
}