function EntityReferenceFieldTest::testEntityReferenceListFiberSuspension

Tests fiber suspension within EntityReferenceFieldItemList::__get().

See also

https://github.com/php/php-src/issues/14983

File

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

Class

EntityReferenceFieldTest
Tests for the entity reference field.

Namespace

Drupal\KernelTests\Core\Entity

Code

public function testEntityReferenceListFiberSuspension() : 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();
  $entity = $storage->load($entity->id());
  $fiber = new \Fiber(fn() => $entity->{$this->fieldName}->entity);
  $fiber->start();
  $referenced_entity = $entity->{$this->fieldName}->entity;
  $this->assertIsObject($referenced_entity);
}

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