public function EntityReferenceRevisionsSaveTest::testEntityReferenceRevisionsDeleteHandleDeletedChild in Entity Reference Revisions 8
Tests FieldType\EntityReferenceRevisionsItem::deleteRevision
File
- tests/src/ Kernel/ EntityReferenceRevisionsSaveTest.php, line 273 
Class
- EntityReferenceRevisionsSaveTest
- Tests the entity_reference_revisions NeedsSaveInterface.
Namespace
Drupal\Tests\entity_reference_revisions\KernelCode
public function testEntityReferenceRevisionsDeleteHandleDeletedChild() {
  $field_storage = FieldStorageConfig::create([
    'field_name' => 'field_reference',
    'entity_type' => 'node',
    'type' => 'entity_reference_revisions',
    'settings' => [
      'target_type' => 'node',
    ],
  ]);
  $field_storage
    ->save();
  $field = FieldConfig::create([
    'field_storage' => $field_storage,
    'bundle' => 'article',
  ]);
  $field
    ->save();
  $child = Node::create([
    'type' => 'article',
    'title' => 'Child node',
  ]);
  $child
    ->save();
  $node = Node::create([
    'type' => 'article',
    'title' => 'Parent node',
    'field_reference' => [
      [
        'target_id' => $child
          ->id(),
        'target_revision_id' => $child
          ->getRevisionId(),
      ],
    ],
  ]);
  // Create two revisions.
  $node
    ->save();
  $revisionId = $node
    ->getRevisionId();
  $node
    ->setNewRevision(TRUE);
  $node
    ->save();
  // Force delete the child Paragraph.
  // Core APIs allow this although it is an inconsistent storage situation
  // for Paragraphs.
  $child
    ->delete();
  // Previously deleting a revision with a lost child failed fatal.
  \Drupal::entityTypeManager()
    ->getStorage('node')
    ->deleteRevision($revisionId);
}