abstract class AbstractComparisonValidatorTestCase

@author Daniel Holmes <daniel@danielholmes.org>

Hierarchy

Expanded class hierarchy of AbstractComparisonValidatorTestCase

4 files declare their use of AbstractComparisonValidatorTestCase
EqualToValidatorTest.php in drupal/core/vendor/symfony/validator/Symfony/Component/Validator/Tests/Constraints/EqualToValidatorTest.php
IdenticalToValidatorTest.php in drupal/core/vendor/symfony/validator/Symfony/Component/Validator/Tests/Constraints/IdenticalToValidatorTest.php
NotEqualToValidatorTest.php in drupal/core/vendor/symfony/validator/Symfony/Component/Validator/Tests/Constraints/NotEqualToValidatorTest.php
NotIdenticalToValidatorTest.php in drupal/core/vendor/symfony/validator/Symfony/Component/Validator/Tests/Constraints/NotIdenticalToValidatorTest.php

File

drupal/core/vendor/symfony/validator/Symfony/Component/Validator/Tests/Constraints/AbstractComparisonValidatorTestCase.php, line 20

Namespace

Symfony\Component\Validator\Tests\Constraints
View source
abstract class AbstractComparisonValidatorTestCase extends \PHPUnit_Framework_TestCase {
  private $validator;
  private $context;
  protected function setUp() {
    $this->validator = $this
      ->createValidator();
    $this->context = $this
      ->getMockBuilder('Symfony\\Component\\Validator\\ExecutionContext')
      ->disableOriginalConstructor()
      ->getMock();
    $this->validator
      ->initialize($this->context);
  }

  /**
   * @return AbstractComparisonValidator
   */
  protected abstract function createValidator();
  public function testThrowsConstraintExceptionIfNoValueOrProperty() {
    $this
      ->setExpectedException('Symfony\\Component\\Validator\\Exception\\ConstraintDefinitionException');
    $comparison = $this
      ->createConstraint(array());
    $this->validator
      ->validate('some value', $comparison);
  }

  /**
   * @dataProvider provideValidComparisons
   * @param mixed $dirtyValue
   * @param mixed $comparisonValue
   */
  public function testValidComparisonToValue($dirtyValue, $comparisonValue) {
    $this->context
      ->expects($this
      ->never())
      ->method('addViolation');
    $constraint = $this
      ->createConstraint(array(
      'value' => $comparisonValue,
    ));
    $this->context
      ->expects($this
      ->any())
      ->method('getPropertyPath')
      ->will($this
      ->returnValue('property1'));
    $this->validator
      ->validate($dirtyValue, $constraint);
  }

  /**
   * @return array
   */
  public abstract function provideValidComparisons();

  /**
   * @dataProvider provideInvalidComparisons
   * @param mixed  $dirtyValue
   * @param mixed  $comparedValue
   * @param mixed  $comparedValueString
   * @param string $comparedValueType
   */
  public function testInvalidComparisonToValue($dirtyValue, $comparedValue, $comparedValueString, $comparedValueType) {
    $constraint = $this
      ->createConstraint(array(
      'value' => $comparedValue,
    ));
    $constraint->message = 'Constraint Message';
    $this->context
      ->expects($this
      ->any())
      ->method('getPropertyPath')
      ->will($this
      ->returnValue('property1'));
    $this->context
      ->expects($this
      ->once())
      ->method('addViolation')
      ->with('Constraint Message', array(
      '{{ value }}' => $comparedValueString,
      '{{ compared_value }}' => $comparedValueString,
      '{{ compared_value_type }}' => $comparedValueType,
    ));
    $this->validator
      ->validate($dirtyValue, $constraint);
  }

  /**
   * @return array
   */
  public abstract function provideInvalidComparisons();

  /**
   * @param  array      $options Options for the constraint
   * @return Constraint
   */
  protected abstract function createConstraint(array $options);

}

Members