class ExpressionValidatorTest in Plug 7
Hierarchy
- class \Symfony\Component\Validator\Tests\Constraints\AbstractConstraintValidatorTest extends \Symfony\Component\Validator\Tests\Constraints\PHPUnit_Framework_TestCase- class \Symfony\Component\Validator\Tests\Constraints\ExpressionValidatorTest
 
Expanded class hierarchy of ExpressionValidatorTest
File
- lib/Symfony/ validator/ Symfony/ Component/ Validator/ Tests/ Constraints/ ExpressionValidatorTest.php, line 20 
Namespace
Symfony\Component\Validator\Tests\ConstraintsView source
class ExpressionValidatorTest extends AbstractConstraintValidatorTest {
  protected function getApiVersion() {
    return Validation::API_VERSION_2_5;
  }
  protected function createValidator() {
    return new ExpressionValidator(PropertyAccess::createPropertyAccessor());
  }
  public function testExpressionIsEvaluatedWithNullValue() {
    $constraint = new Expression(array(
      'expression' => 'false',
      'message' => 'myMessage',
    ));
    $this->validator
      ->validate(null, $constraint);
    $this
      ->buildViolation('myMessage')
      ->setParameter('{{ value }}', 'null')
      ->assertRaised();
  }
  public function testExpressionIsEvaluatedWithEmptyStringValue() {
    $constraint = new Expression(array(
      'expression' => 'false',
      'message' => 'myMessage',
    ));
    $this->validator
      ->validate('', $constraint);
    $this
      ->buildViolation('myMessage')
      ->setParameter('{{ value }}', '""')
      ->assertRaised();
  }
  public function testSucceedingExpressionAtObjectLevel() {
    $constraint = new Expression('this.data == 1');
    $object = new Entity();
    $object->data = '1';
    $this
      ->setObject($object);
    $this->validator
      ->validate($object, $constraint);
    $this
      ->assertNoViolation();
  }
  public function testFailingExpressionAtObjectLevel() {
    $constraint = new Expression(array(
      'expression' => 'this.data == 1',
      'message' => 'myMessage',
    ));
    $object = new Entity();
    $object->data = '2';
    $this
      ->setObject($object);
    $this->validator
      ->validate($object, $constraint);
    $this
      ->buildViolation('myMessage')
      ->setParameter('{{ value }}', 'object')
      ->assertRaised();
  }
  public function testSucceedingExpressionAtPropertyLevel() {
    $constraint = new Expression('value == this.data');
    $object = new Entity();
    $object->data = '1';
    $this
      ->setRoot($object);
    $this
      ->setPropertyPath('data');
    $this
      ->setProperty($object, 'data');
    $this->validator
      ->validate('1', $constraint);
    $this
      ->assertNoViolation();
  }
  public function testFailingExpressionAtPropertyLevel() {
    $constraint = new Expression(array(
      'expression' => 'value == this.data',
      'message' => 'myMessage',
    ));
    $object = new Entity();
    $object->data = '1';
    $this
      ->setRoot($object);
    $this
      ->setPropertyPath('data');
    $this
      ->setProperty($object, 'data');
    $this->validator
      ->validate('2', $constraint);
    $this
      ->buildViolation('myMessage')
      ->setParameter('{{ value }}', '"2"')
      ->atPath('data')
      ->assertRaised();
  }
  public function testSucceedingExpressionAtNestedPropertyLevel() {
    $constraint = new Expression('value == this.data');
    $object = new Entity();
    $object->data = '1';
    $root = new Entity();
    $root->reference = $object;
    $this
      ->setRoot($root);
    $this
      ->setPropertyPath('reference.data');
    $this
      ->setProperty($object, 'data');
    $this->validator
      ->validate('1', $constraint);
    $this
      ->assertNoViolation();
  }
  public function testFailingExpressionAtNestedPropertyLevel() {
    $constraint = new Expression(array(
      'expression' => 'value == this.data',
      'message' => 'myMessage',
    ));
    $object = new Entity();
    $object->data = '1';
    $root = new Entity();
    $root->reference = $object;
    $this
      ->setRoot($root);
    $this
      ->setPropertyPath('reference.data');
    $this
      ->setProperty($object, 'data');
    $this->validator
      ->validate('2', $constraint);
    $this
      ->buildViolation('myMessage')
      ->setParameter('{{ value }}', '"2"')
      ->atPath('reference.data')
      ->assertRaised();
  }
  /**
   * When validatePropertyValue() is called with a class name
   * https://github.com/symfony/symfony/pull/11498
   */
  public function testSucceedingExpressionAtPropertyLevelWithoutRoot() {
    $constraint = new Expression('value == "1"');
    $this
      ->setRoot('1');
    $this
      ->setPropertyPath('');
    $this
      ->setProperty(null, 'property');
    $this->validator
      ->validate('1', $constraint);
    $this
      ->assertNoViolation();
  }
  /**
   * When validatePropertyValue() is called with a class name
   * https://github.com/symfony/symfony/pull/11498
   */
  public function testFailingExpressionAtPropertyLevelWithoutRoot() {
    $constraint = new Expression(array(
      'expression' => 'value == "1"',
      'message' => 'myMessage',
    ));
    $this
      ->setRoot('2');
    $this
      ->setPropertyPath('');
    $this
      ->setProperty(null, 'property');
    $this->validator
      ->validate('2', $constraint);
    $this
      ->buildViolation('myMessage')
      ->setParameter('{{ value }}', '"2"')
      ->atPath('')
      ->assertRaised();
  }
} 
      