You are here

public function ValidReferenceConstraintValidatorTest::testValidation in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 core/modules/system/src/Tests/Entity/ValidReferenceConstraintValidatorTest.php \Drupal\system\Tests\Entity\ValidReferenceConstraintValidatorTest::testValidation()

Tests the ValidReferenceConstraintValidator.

File

core/modules/system/src/Tests/Entity/ValidReferenceConstraintValidatorTest.php, line 44
Contains \Drupal\system\Tests\Entity\ValidReferenceConstraintValidatorTest.

Class

ValidReferenceConstraintValidatorTest
Tests validation constraints for ValidReferenceConstraintValidator.

Namespace

Drupal\system\Tests\Entity

Code

public function testValidation() {

  // Create a test entity to be referenced.
  $entity = $this
    ->createUser();

  // By default entity references already have the ValidReference constraint.
  $definition = BaseFieldDefinition::create('entity_reference')
    ->setSettings(array(
    'target_type' => 'user',
  ));
  $typed_data = $this->typedData
    ->create($definition, array(
    'target_id' => $entity
      ->id(),
  ));
  $violations = $typed_data
    ->validate();
  $this
    ->assertFalse($violations
    ->count(), 'Validation passed for correct value.');

  // NULL is also considered a valid reference.
  $typed_data = $this->typedData
    ->create($definition, array(
    'target_id' => NULL,
  ));
  $violations = $typed_data
    ->validate();
  $this
    ->assertFalse($violations
    ->count(), 'Validation passed for correct value.');
  $typed_data = $this->typedData
    ->create($definition, array(
    'target_id' => $entity
      ->id(),
  ));

  // Delete the referenced entity.
  $entity
    ->delete();
  $violations = $typed_data
    ->validate();
  $this
    ->assertTrue($violations
    ->count(), 'Validation failed for incorrect value.');

  // Make sure the information provided by a violation is correct.
  $violation = $violations[0];
  $this
    ->assertEqual($violation
    ->getMessage(), t('The referenced entity (%type: %id) does not exist.', array(
    '%type' => 'user',
    '%id' => $entity
      ->id(),
  )), 'The message for invalid value is correct.');
  $this
    ->assertEqual($violation
    ->getRoot(), $typed_data, 'Violation root is correct.');
}