[Validator] Add expressionLanguage to ExpressionValidator constructor

This commit is contained in:
Jáchym Toušek 2015-10-07 10:29:03 +02:00
parent f35a0d202f
commit 4ad1e205b4
2 changed files with 26 additions and 10 deletions

View File

@ -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;
}
/**

View File

@ -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.');
}
}