You are here

abstract class AbstractConstraintValidatorTest in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 vendor/symfony/validator/Tests/Constraints/AbstractConstraintValidatorTest.php \Symfony\Component\Validator\Tests\Constraints\AbstractConstraintValidatorTest

@since 2.5.3

@author Bernhard Schussek <bschussek@gmail.com>

Hierarchy

  • class \Symfony\Component\Validator\Tests\Constraints\AbstractConstraintValidatorTest extends \Symfony\Component\Validator\Tests\Constraints\PHPUnit_Framework_TestCase

Expanded class hierarchy of AbstractConstraintValidatorTest

File

vendor/symfony/validator/Tests/Constraints/AbstractConstraintValidatorTest.php, line 31

Namespace

Symfony\Component\Validator\Tests\Constraints
View source
abstract class AbstractConstraintValidatorTest extends \PHPUnit_Framework_TestCase {

  /**
   * @var ExecutionContextInterface
   */
  protected $context;

  /**
   * @var ConstraintValidatorInterface
   */
  protected $validator;
  protected $group;
  protected $metadata;
  protected $object;
  protected $value;
  protected $root;
  protected $propertyPath;
  protected $constraint;
  protected $defaultTimezone;
  protected function setUp() {
    $this->group = 'MyGroup';
    $this->metadata = null;
    $this->object = null;
    $this->value = 'InvalidValue';
    $this->root = 'root';
    $this->propertyPath = 'property.path';

    // Initialize the context with some constraint so that we can
    // successfully build a violation.
    $this->constraint = new NotNull();
    $this->context = $this
      ->createContext();
    $this->validator = $this
      ->createValidator();
    $this->validator
      ->initialize($this->context);
    \Locale::setDefault('en');
    $this
      ->setDefaultTimezone('UTC');
  }
  protected function tearDown() {
    $this
      ->restoreDefaultTimezone();
  }
  protected function setDefaultTimezone($defaultTimezone) {

    // Make sure this method can not be called twice before calling
    // also restoreDefaultTimezone()
    if (null === $this->defaultTimezone) {
      $this->defaultTimezone = date_default_timezone_get();
      date_default_timezone_set($defaultTimezone);
    }
  }
  protected function restoreDefaultTimezone() {
    if (null !== $this->defaultTimezone) {
      date_default_timezone_set($this->defaultTimezone);
      $this->defaultTimezone = null;
    }
  }
  protected function createContext() {
    $translator = $this
      ->getMock('Symfony\\Component\\Translation\\TranslatorInterface');
    $validator = $this
      ->getMock('Symfony\\Component\\Validator\\Validator\\ValidatorInterface');
    $contextualValidator = $this
      ->getMock('Symfony\\Component\\Validator\\Validator\\ContextualValidatorInterface');
    switch ($this
      ->getApiVersion()) {
      case Validation::API_VERSION_2_5:
        $context = new ExecutionContext($validator, $this->root, $translator);
        break;
      case Validation::API_VERSION_2_4:
      case Validation::API_VERSION_2_5_BC:
        $context = new LegacyExecutionContext($validator, $this->root, $this
          ->getMock('Symfony\\Component\\Validator\\MetadataFactoryInterface'), $translator);
        break;
      default:
        throw new \RuntimeException('Invalid API version');
    }
    $context
      ->setGroup($this->group);
    $context
      ->setNode($this->value, $this->object, $this->metadata, $this->propertyPath);
    $context
      ->setConstraint($this->constraint);
    $validator
      ->expects($this
      ->any())
      ->method('inContext')
      ->with($context)
      ->will($this
      ->returnValue($contextualValidator));
    return $context;
  }

  /**
   * @param mixed  $message
   * @param array  $parameters
   * @param string $propertyPath
   * @param string $invalidValue
   * @param null   $plural
   * @param null   $code
   *
   * @return ConstraintViolation
   *
   * @deprecated to be removed in Symfony 3.0. Use {@link buildViolation()} instead.
   */
  protected function createViolation($message, array $parameters = array(), $propertyPath = 'property.path', $invalidValue = 'InvalidValue', $plural = null, $code = null) {
    return new ConstraintViolation(null, $message, $parameters, $this->root, $propertyPath, $invalidValue, $plural, $code, $this->constraint);
  }
  protected function setGroup($group) {
    $this->group = $group;
    $this->context
      ->setGroup($group);
  }
  protected function setObject($object) {
    $this->object = $object;
    $this->metadata = is_object($object) ? new ClassMetadata(get_class($object)) : null;
    $this->context
      ->setNode($this->value, $this->object, $this->metadata, $this->propertyPath);
  }
  protected function setProperty($object, $property) {
    $this->object = $object;
    $this->metadata = is_object($object) ? new PropertyMetadata(get_class($object), $property) : null;
    $this->context
      ->setNode($this->value, $this->object, $this->metadata, $this->propertyPath);
  }
  protected function setValue($value) {
    $this->value = $value;
    $this->context
      ->setNode($this->value, $this->object, $this->metadata, $this->propertyPath);
  }
  protected function setRoot($root) {
    $this->root = $root;
    $this->context = $this
      ->createContext();
    $this->validator
      ->initialize($this->context);
  }
  protected function setPropertyPath($propertyPath) {
    $this->propertyPath = $propertyPath;
    $this->context
      ->setNode($this->value, $this->object, $this->metadata, $this->propertyPath);
  }
  protected function expectNoValidate() {
    $validator = $this->context
      ->getValidator()
      ->inContext($this->context);
    $validator
      ->expects($this
      ->never())
      ->method('atPath');
    $validator
      ->expects($this
      ->never())
      ->method('validate');
  }
  protected function expectValidateAt($i, $propertyPath, $value, $group) {
    $validator = $this->context
      ->getValidator()
      ->inContext($this->context);
    $validator
      ->expects($this
      ->at(2 * $i))
      ->method('atPath')
      ->with($propertyPath)
      ->will($this
      ->returnValue($validator));
    $validator
      ->expects($this
      ->at(2 * $i + 1))
      ->method('validate')
      ->with($value, $this
      ->logicalOr(null, array()), $group);
  }
  protected function expectValidateValueAt($i, $propertyPath, $value, $constraints, $group = null) {
    $contextualValidator = $this->context
      ->getValidator()
      ->inContext($this->context);
    $contextualValidator
      ->expects($this
      ->at(2 * $i))
      ->method('atPath')
      ->with($propertyPath)
      ->will($this
      ->returnValue($contextualValidator));
    $contextualValidator
      ->expects($this
      ->at(2 * $i + 1))
      ->method('validate')
      ->with($value, $constraints, $group);
  }
  protected function assertNoViolation() {
    $this
      ->assertSame(0, $violationsCount = count($this->context
      ->getViolations()), sprintf('0 violation expected. Got %u.', $violationsCount));
  }

  /**
   * @param mixed  $message
   * @param array  $parameters
   * @param string $propertyPath
   * @param string $invalidValue
   * @param null   $plural
   * @param null   $code
   *
   * @deprecated To be removed in Symfony 3.0. Use
   *             {@link buildViolation()} instead.
   */
  protected function assertViolation($message, array $parameters = array(), $propertyPath = 'property.path', $invalidValue = 'InvalidValue', $plural = null, $code = null) {
    @trigger_error('The ' . __METHOD__ . ' method is deprecated since version 2.3 and will be removed in 3.0. Use the buildViolation() method instead.', E_USER_DEPRECATED);
    $this
      ->buildViolation($message)
      ->setParameters($parameters)
      ->atPath($propertyPath)
      ->setInvalidValue($invalidValue)
      ->setCode($code)
      ->setPlural($plural)
      ->assertRaised();
  }

  /**
   * @param array $expected
   *
   * @deprecated To be removed in Symfony 3.0. Use
   *             {@link buildViolation()} instead.
   */
  protected function assertViolations(array $expected) {
    @trigger_error('The ' . __METHOD__ . ' method is deprecated since version 2.3 and will be removed in 3.0. Use the buildViolation() method instead.', E_USER_DEPRECATED);
    $violations = $this->context
      ->getViolations();
    $this
      ->assertCount(count($expected), $violations);
    $i = 0;
    foreach ($expected as $violation) {
      $this
        ->assertEquals($violation, $violations[$i++]);
    }
  }

  /**
   * @param $message
   *
   * @return ConstraintViolationAssertion
   */
  protected function buildViolation($message) {
    return new ConstraintViolationAssertion($this->context, $message, $this->constraint);
  }
  protected function getApiVersion() {
    return Validation::API_VERSION_2_5;
  }
  protected abstract function createValidator();

}

Members

Namesort descending Modifiers Type Description Overrides
AbstractConstraintValidatorTest::$constraint protected property
AbstractConstraintValidatorTest::$context protected property 1
AbstractConstraintValidatorTest::$defaultTimezone protected property
AbstractConstraintValidatorTest::$group protected property
AbstractConstraintValidatorTest::$metadata protected property
AbstractConstraintValidatorTest::$object protected property
AbstractConstraintValidatorTest::$propertyPath protected property
AbstractConstraintValidatorTest::$root protected property
AbstractConstraintValidatorTest::$validator protected property 1
AbstractConstraintValidatorTest::$value protected property
AbstractConstraintValidatorTest::assertNoViolation protected function
AbstractConstraintValidatorTest::assertViolation Deprecated protected function
AbstractConstraintValidatorTest::assertViolations Deprecated protected function
AbstractConstraintValidatorTest::buildViolation protected function
AbstractConstraintValidatorTest::createContext protected function
AbstractConstraintValidatorTest::createValidator abstract protected function 42
AbstractConstraintValidatorTest::createViolation Deprecated protected function
AbstractConstraintValidatorTest::expectNoValidate protected function
AbstractConstraintValidatorTest::expectValidateAt protected function
AbstractConstraintValidatorTest::expectValidateValueAt protected function
AbstractConstraintValidatorTest::getApiVersion protected function 42
AbstractConstraintValidatorTest::restoreDefaultTimezone protected function
AbstractConstraintValidatorTest::setDefaultTimezone protected function
AbstractConstraintValidatorTest::setGroup protected function
AbstractConstraintValidatorTest::setObject protected function
AbstractConstraintValidatorTest::setProperty protected function
AbstractConstraintValidatorTest::setPropertyPath protected function
AbstractConstraintValidatorTest::setRoot protected function
AbstractConstraintValidatorTest::setUp protected function 2
AbstractConstraintValidatorTest::setValue protected function
AbstractConstraintValidatorTest::tearDown protected function 1