public function EntityReferenceRevisionsOrphanRemovalForBaseFieldDefinitionTest::insertRevisionableData in Entity Reference Revisions 8
Inserts revisionable entities needed for testing.
Overrides EntityReferenceRevisionsOrphanRemovalTest::insertRevisionableData
File
- tests/
src/ Functional/ EntityReferenceRevisionsOrphanRemovalForBaseFieldDefinitionTest.php, line 38
Class
- EntityReferenceRevisionsOrphanRemovalForBaseFieldDefinitionTest
- Tests orphan composite revisions are properly removed.
Namespace
Drupal\Tests\entity_reference_revisions\FunctionalCode
public function insertRevisionableData() {
/** @var \Drupal\node\NodeStorageInterface $entity_host_storage */
$entity_host_storage = \Drupal::entityTypeManager()
->getStorage('entity_host_relationship_test');
// Scenario 1: A composite with a default revision that is referenced and an
// old revision that is not. Result: Only the old revision is deleted.
$composite_entity_first = EntityTestCompositeRelationship::create([
'name' => 'first not used, second used',
'parent_id' => 1000,
'parent_type' => 'entity_host_relationship_test',
'parent_field_name' => 'entity',
]);
$composite_entity_first
->save();
$composite_entity_first = EntityTestCompositeRelationship::load($composite_entity_first
->id());
$composite_entity_first
->setNewRevision(TRUE);
$composite_entity_first
->save();
$entity_host = EntityTestHostRelationship::create([
'name' => 'First composite',
'entity' => $composite_entity_first,
]);
$entity_host
->save();
// Scenario 2: A composite with an old revision that is used and a default
// revision that is not. Result: Nothing should be deleted.
$composite_entity_second = EntityTestCompositeRelationship::create([
'name' => 'first used, second not used',
]);
$composite_entity_second
->save();
$entity_host = EntityTestHostRelationship::create([
'name' => 'Second composite',
'entity' => $composite_entity_second,
]);
$entity_host
->save();
$entity_host = $this
->getEntityHostByName('Second composite');
$entity_host = $entity_host_storage
->createRevision($entity_host);
$entity_host
->set('entity', NULL);
$entity_host
->save();
$composite_entity_second = EntityTestCompositeRelationship::load($composite_entity_second
->id());
$composite_entity_second
->setNewRevision(TRUE);
$composite_entity_second
->save();
// Scenario 3: A composite with an old revision and a default revision both
// that are not used with empty parent fields. Result: Nothing should be
// deleted since we do not know if it is still used.
$composite_entity_third = EntityTestCompositeRelationship::create([
'name' => 'first not used, second not used',
]);
$composite_entity_third
->save();
$composite_entity_third = EntityTestCompositeRelationship::load($composite_entity_third
->id());
$composite_entity_third
->setNewRevision(TRUE);
$composite_entity_third
->save();
// Scenario 4: A composite with an old revision and a default revision both
// that are not used with filled parent fields. Result: Should first delete
// the old revision and then the default revision. Delete the entity too.
$composite_entity_fourth = EntityTestCompositeRelationship::create([
'name' => '1st filled not, 2nd filled not',
'parent_id' => 1001,
'parent_type' => 'entity_host_relationship_test',
'parent_field_name' => 'entity',
]);
$composite_entity_fourth
->save();
$composite_entity_fourth = EntityTestCompositeRelationship::load($composite_entity_fourth
->id());
$composite_entity_fourth
->setNewRevision(TRUE);
$composite_entity_fourth
->set('parent_id', 1001);
$composite_entity_fourth
->save();
// Scenario 5: A composite with many revisions and 2 at least used. Result:
// Delete all unused revisions.
$composite_entity_fifth = EntityTestCompositeRelationship::create([
'name' => '1st not, 2nd used, 3rd not, 4th',
'parent_id' => 1001,
'parent_type' => 'entity_host_relationship_test',
'parent_field_name' => 'entity',
]);
$composite_entity_fifth
->save();
$composite_entity_fifth = EntityTestCompositeRelationship::load($composite_entity_fifth
->id());
$composite_entity_fifth
->setNewRevision(TRUE);
$composite_entity_fifth
->save();
$entity_host = EntityTestHostRelationship::create([
'name' => 'Third composite',
'entity' => $composite_entity_fifth,
]);
$entity_host
->save();
$entity_host = $this
->getEntityHostByName('Second composite');
$entity_host = $entity_host_storage
->createRevision($entity_host);
$entity_host
->set('entity', NULL);
$entity_host
->save();
$composite_entity_fifth = EntityTestCompositeRelationship::load($composite_entity_fifth
->id());
$composite_entity_fifth
->setNewRevision(TRUE);
$composite_entity_fifth
->save();
$entity_host = $this
->getEntityHostByName('Third composite');
$entity_host = $entity_host_storage
->createRevision($entity_host);
$entity_host
->set('entity', $composite_entity_fifth);
$entity_host
->save();
// Scenario 6: A composite with wrong parent fields filled pointing to a non
// existent parent (Parent 1). However, Parent 2 references it. Result: Must
// not be deleted.
$entity_host = EntityTestHostRelationship::create([
'name' => 'DELETED composite',
]);
$entity_host
->save();
$composite_entity_sixth = EntityTestCompositeRelationship::create([
'name' => 'wrong parent fields',
'parent_id' => $entity_host
->id(),
'parent_type' => 'entity_host_relationship_test',
'parent_field_name' => 'entity',
]);
$composite_entity_sixth
->save();
$entity_host
->delete();
$entity_host = EntityTestHostRelationship::create([
'name' => 'Fourth composite',
'entity' => $composite_entity_sixth,
]);
$entity_host
->save();
}