You are here

public function NestedEntityReferencesDetectorTest::testRunWithLingotekEnabledNestedEntityReferenceField in Lingotek Translation 4.0.x

Same name and namespace in other branches
  1. 3.4.x tests/src/Unit/Plugin/RelatedEntitiesDetector/NestedEntityReferencesDetectorTest.php \Drupal\Tests\lingotek\Unit\Plugin\RelatedEntitiesDetector\NestedEntityReferencesDetectorTest::testRunWithLingotekEnabledNestedEntityReferenceField()
  2. 3.5.x tests/src/Unit/Plugin/RelatedEntitiesDetector/NestedEntityReferencesDetectorTest.php \Drupal\Tests\lingotek\Unit\Plugin\RelatedEntitiesDetector\NestedEntityReferencesDetectorTest::testRunWithLingotekEnabledNestedEntityReferenceField()
  3. 3.6.x tests/src/Unit/Plugin/RelatedEntitiesDetector/NestedEntityReferencesDetectorTest.php \Drupal\Tests\lingotek\Unit\Plugin\RelatedEntitiesDetector\NestedEntityReferencesDetectorTest::testRunWithLingotekEnabledNestedEntityReferenceField()
  4. 3.7.x tests/src/Unit/Plugin/RelatedEntitiesDetector/NestedEntityReferencesDetectorTest.php \Drupal\Tests\lingotek\Unit\Plugin\RelatedEntitiesDetector\NestedEntityReferencesDetectorTest::testRunWithLingotekEnabledNestedEntityReferenceField()
  5. 3.8.x tests/src/Unit/Plugin/RelatedEntitiesDetector/NestedEntityReferencesDetectorTest.php \Drupal\Tests\lingotek\Unit\Plugin\RelatedEntitiesDetector\NestedEntityReferencesDetectorTest::testRunWithLingotekEnabledNestedEntityReferenceField()

@covers ::extract

File

tests/src/Unit/Plugin/RelatedEntitiesDetector/NestedEntityReferencesDetectorTest.php, line 155

Class

NestedEntityReferencesDetectorTest
Unit test for the nested entitiy detector plugin

Namespace

Drupal\Tests\lingotek\Unit\Plugin\RelatedEntitiesDetector

Code

public function testRunWithLingotekEnabledNestedEntityReferenceField() {
  $this->lingotekConfiguration
    ->expects($this
    ->once())
    ->method('isFieldLingotekEnabled')
    ->with('entity_id', 'bundle', 'entity_reference_field')
    ->willReturn(TRUE);
  $this->lingotekConfiguration
    ->expects($this
    ->once())
    ->method('isEnabled')
    ->with('another_entity', 'another_bundle')
    ->willReturn(TRUE);
  $titleFieldDefinition = $this
    ->createMock(BaseFieldDefinition::class);
  $titleFieldDefinition
    ->expects($this
    ->any())
    ->method('getType')
    ->willReturn('text');
  $titleFieldDefinition
    ->expects($this
    ->any())
    ->method('getName')
    ->willReturn('Title');
  $target_entity_type = $this
    ->createMock(ContentEntityType::class);
  $embedded_entity_reference = $this
    ->createmock(ContentEntityInterface::class);
  $embedded_entity_reference
    ->expects($this
    ->any())
    ->method('referencedEntities')
    ->willReturn([
    $embedded_entity_reference,
  ]);
  $embedded_entity_reference
    ->expects($this
    ->any())
    ->method('bundle')
    ->willReturn('another_bundle');
  $embedded_entity_reference
    ->expects($this
    ->any())
    ->method('id')
    ->willreturn(2);
  $embedded_entity_reference
    ->expects($this
    ->once())
    ->method('isTranslatable')
    ->willReturn(TRUE);
  $embedded_entity_reference
    ->expects($this
    ->any())
    ->method('getUntranslated')
    ->willReturnSelf();
  $embedded_entity_reference
    ->expects($this
    ->any())
    ->method('getEntityTypeId')
    ->willReturn('another_entity');
  $nestedEntityReferenceFieldStorageDefinition = $this
    ->createMock(FieldStorageDefinition::class);
  $nestedEntityReferenceFieldStorageDefinition
    ->expects($this
    ->any())
    ->method('getSetting')
    ->with('target_type')
    ->willReturn('another_entity');
  $nestedEntityReferenceFieldDefinition = $this
    ->createMock(BaseFieldDefinition::class);
  $nestedEntityReferenceFieldDefinition
    ->expects($this
    ->any())
    ->method('getType')
    ->willReturn('entity_reference');
  $nestedEntityReferenceFieldDefinition
    ->expects($this
    ->any())
    ->method('getName')
    ->willReturn('Nested Reference');
  $nestedEntityReferenceFieldDefinition
    ->expects($this
    ->any())
    ->method('getFieldStorageDefinition')
    ->willReturn($nestedEntityReferenceFieldStorageDefinition);
  $this->entityTypeManager
    ->expects($this
    ->any())
    ->method('getDefinition')
    ->with('another_entity')
    ->willReturn($target_entity_type);
  $this->entityFieldManager
    ->expects($this
    ->any())
    ->method('getFieldDefinitions')
    ->with('entity_id')
    ->willReturn([
    'title' => $titleFieldDefinition,
    'entity_reference_field' => $nestedEntityReferenceFieldDefinition,
  ]);
  $itemList = $this
    ->createMock(EntityInterface::class);
  $itemList
    ->expects($this
    ->once())
    ->method('referencedEntities')
    ->willReturn([
    $embedded_entity_reference,
  ]);
  $entity = $this
    ->createMock(ContentEntityInterface::class);
  $entity
    ->expects($this
    ->any())
    ->method('getEntityTypeId')
    ->willReturn($this->entityType
    ->id());
  $entity
    ->expects($this
    ->any())
    ->method('bundle')
    ->willReturn('bundle');
  $entity
    ->expects($this
    ->any())
    ->method('id')
    ->willReturn(1);
  $entity
    ->expects($this
    ->any())
    ->method('getUntranslated')
    ->willReturnSelf();
  $entity
    ->expects($this
    ->any())
    ->method('get')
    ->with('entity_reference_field')
    ->willReturn($itemList);
  $entities = [];
  $related = [];
  $visited = [];
  $this->detector
    ->extract($entity, $entities, $related, 2, $visited);

  // Assert the entity is included.
  $this
    ->assertCount(1, $entities);
  $this
    ->assertEquals($entities['entity_id'][1], $entity);

  // Assert the cohesion are included as related.
  $this
    ->assertCount(1, $related);
  $this
    ->assertEquals($related['another_entity'][2], $embedded_entity_reference);
}