public function EntityReferenceRevisionsCompositeTest::testCompositeDeleteRevisionAfterChangingParent in Entity Reference Revisions 8
Composite entity with revisions isn't deleted when changing parents.
Includes revisions on the host entity.
File
- tests/
src/ Kernel/ EntityReferenceRevisionsCompositeTest.php, line 591  
Class
- EntityReferenceRevisionsCompositeTest
 - Tests the entity_reference_revisions composite relationship.
 
Namespace
Drupal\Tests\entity_reference_revisions\KernelCode
public function testCompositeDeleteRevisionAfterChangingParent() {
  list($composite, $node) = $this
    ->assignCompositeToNode();
  // Remove reference to the composite entity from the node.
  $node
    ->set('composite_reference', NULL);
  $node
    ->setNewRevision();
  $node
    ->save();
  // Setting a new revision of the composite entity in the second node.
  $composite = EntityTestCompositeRelationship::load($composite
    ->id());
  $composite
    ->setNewRevision(TRUE);
  $composite
    ->save();
  $composite = EntityTestCompositeRelationship::load($composite
    ->id());
  $second_node = Node::create([
    'title' => 'Second node',
    'type' => 'article',
    'composite_reference' => $composite,
  ]);
  $second_node
    ->save();
  // Remove reference to the composite entity from the node.
  $second_node
    ->set('composite_reference', NULL);
  $second_node
    ->setNewRevision(TRUE);
  $second_node
    ->save();
  // Verify the composite entity is not removed on nodes with revisions.
  $composite = EntityTestCompositeRelationship::load($composite
    ->id());
  $this
    ->assertNotNull($composite);
  // Verify the amount of revisions of each entity.
  $this
    ->assertRevisionCount(2, 'entity_test_composite', $composite
    ->id());
  $this
    ->assertRevisionCount(2, 'node', $node
    ->id());
  $this
    ->assertRevisionCount(2, 'node', $second_node
    ->id());
  // Test that the composite entity is not deleted when its old parent is
  // deleted.
  $node
    ->delete();
  $composite = EntityTestCompositeRelationship::load($composite
    ->id());
  $this
    ->assertNotNull($composite);
  // Verify that the composite entity is not removed after running cron but
  // the previous unused revision is deleted.
  $this->cron
    ->run();
  $composite = EntityTestCompositeRelationship::load($composite
    ->id());
  $this
    ->assertNotNull($composite);
  $this
    ->assertRevisionCount(1, 'entity_test_composite', $composite
    ->id());
}