[Validator] Add expressionLanguage to ExpressionValidator constructor
This commit is contained in:
parent
f35a0d202f
commit
4ad1e205b4
@ -37,18 +37,10 @@ class ExpressionValidator extends ConstraintValidator
|
||||
*/
|
||||
private $expressionLanguage;
|
||||
|
||||
/**
|
||||
* @param PropertyAccessorInterface|null $propertyAccessor Optional as of Symfony 2.5
|
||||
*
|
||||
* @throws UnexpectedTypeException If the property accessor is invalid
|
||||
*/
|
||||
public function __construct($propertyAccessor = null)
|
||||
public function __construct(PropertyAccessorInterface $propertyAccessor = null, ExpressionLanguage $expressionLanguage = null)
|
||||
{
|
||||
if (null !== $propertyAccessor && !$propertyAccessor instanceof PropertyAccessorInterface) {
|
||||
throw new UnexpectedTypeException($propertyAccessor, 'null or \Symfony\Component\PropertyAccess\PropertyAccessorInterface');
|
||||
}
|
||||
|
||||
$this->propertyAccessor = $propertyAccessor;
|
||||
$this->expressionLanguage = $expressionLanguage;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -217,4 +217,28 @@ class ExpressionValidatorTest extends AbstractConstraintValidatorTest
|
||||
->setCode(Expression::EXPRESSION_FAILED_ERROR)
|
||||
->assertRaised();
|
||||
}
|
||||
|
||||
public function testExpressionLanguageUsage()
|
||||
{
|
||||
$constraint = new Expression(array(
|
||||
'expression' => 'false',
|
||||
));
|
||||
|
||||
$expressionLanguage = $this->getMock('Symfony\Component\ExpressionLanguage\ExpressionLanguage');
|
||||
|
||||
$used = false;
|
||||
|
||||
$expressionLanguage->method('evaluate')
|
||||
->will($this->returnCallback(function () use (&$used) {
|
||||
$used = true;
|
||||
|
||||
return true;
|
||||
}));
|
||||
|
||||
$validator = new ExpressionValidator(null, $expressionLanguage);
|
||||
$validator->initialize($this->createContext());
|
||||
$validator->validate(null, $constraint);
|
||||
|
||||
$this->assertTrue($used, 'Failed asserting that custom ExpressionLanguage instance is used.');
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user