function EntityReferenceFieldTest::testEntityReferenceItemFiberSuspension

Tests fiber suspension within EntityReferenceItemBase::__get().

File

core/tests/Drupal/KernelTests/Core/Entity/EntityReferenceFieldTest.php, line 118

Class

EntityReferenceFieldTest
Tests for the entity reference field.

Namespace

Drupal\KernelTests\Core\Entity

Code

public function testEntityReferenceItemFiberSuspension() : void {
  $referenced_entity = $this->container
    ->get('entity_type.manager')
    ->getStorage($this->referencedEntityType)
    ->create([
    'type' => $this->bundle,
  ]);
  $referenced_entity->save();
  $storage = $this->container
    ->get('entity_type.manager')
    ->getStorage($this->entityType);
  $entity = $storage->create([
    'type' => $this->bundle,
  ]);
  $entity->{$this->fieldName}->target_id = $referenced_entity->id();
  $entity->save();
  /** @var \Drupal\Core\Entity\FieldableEntityInterface $entity */
  $entity = $storage->load($entity->id());
  $field_item = $entity->get($this->fieldName)
    ->first();
  $fiber = new \Fiber(fn() => $field_item->entity);
  $fiber->start();
  $referenced_entity = $field_item->entity;
  $this->assertIsObject($referenced_entity);
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.