entity_hierarchy-8.x-2.24/tests/src/Kernel/EntityHierarchyValidationTest.php
tests/src/Kernel/EntityHierarchyValidationTest.php
<?php namespace Drupal\Tests\entity_hierarchy\Kernel; use Drupal\Core\Entity\EntityInterface; /** * Defines a class for testing validation constraint. * * @group entity_hierarchy */ class EntityHierarchyValidationTest extends EntityHierarchyKernelTestBase { /** * Tests validation. */ public function testValidation(): void { // Create root user. $this->createUser(); $child = $this->createTestEntity($this->parent->id()); // Try and reference child. $this->parent->{self::FIELD_NAME}->target_id = $child->id(); $this->doTestViolations($child); // Try and reference self. $this->parent->{self::FIELD_NAME}->target_id = $this->parent->id(); $this->doTestViolations($this->parent); // Try and reference grandchild. $grandchild = $this->createTestEntity($child->id()); $this->parent->{self::FIELD_NAME}->target_id = $grandchild->id(); $this->doTestViolations($grandchild); } /** * Tests violations. * * @param \Drupal\Core\Entity\EntityInterface $referencedEntity * Referenced entity. */ protected function doTestViolations(EntityInterface $referencedEntity) { $violations = $this->parent->validate(); $this->assertCount(1, $violations); $violation = $violations[0]; $this->assertEquals(sprintf('This entity (entity_test: %s) cannot be referenced as it is either a child or the same entity.', $referencedEntity->id()), strip_tags($violation->getMessage())); $this->assertEquals(self::FIELD_NAME . '.0.target_id', $violation->getPropertyPath()); } }