public function FieldAttachStorageTest::testFieldAttachDelete in Drupal 8
Same name and namespace in other branches
- 9 core/modules/field/tests/src/Kernel/FieldAttachStorageTest.php \Drupal\Tests\field\Kernel\FieldAttachStorageTest::testFieldAttachDelete()
Test entity deletion.
File
- core/
modules/ field/ tests/ src/ Kernel/ FieldAttachStorageTest.php, line 229
Class
- FieldAttachStorageTest
- Tests storage-related Field Attach API functions.
Namespace
Drupal\Tests\field\KernelCode
public function testFieldAttachDelete() {
$entity_type = 'entity_test_rev';
$this
->createFieldWithStorage('', $entity_type);
$cardinality = $this->fieldTestData->field_storage
->getCardinality();
$entity = $this->container
->get('entity_type.manager')
->getStorage($entity_type)
->create([
'type' => $this->fieldTestData->field
->getTargetBundle(),
]);
$vids = [];
// Create revision 0
$values = $this
->_generateTestFieldValues($cardinality);
$entity->{$this->fieldTestData->field_name} = $values;
$entity
->save();
$vids[] = $entity
->getRevisionId();
// Create revision 1
$entity
->setNewRevision();
$entity
->save();
$vids[] = $entity
->getRevisionId();
// Create revision 2
$entity
->setNewRevision();
$entity
->save();
$vids[] = $entity
->getRevisionId();
$controller = $this->container
->get('entity_type.manager')
->getStorage($entity
->getEntityTypeId());
$controller
->resetCache();
// Confirm each revision loads
foreach ($vids as $vid) {
$revision = $controller
->loadRevision($vid);
$this
->assertEqual(count($revision->{$this->fieldTestData->field_name}), $cardinality, "The test entity revision {$vid} has {$cardinality} values.");
}
// Delete revision 1, confirm the other two still load.
$controller
->deleteRevision($vids[1]);
$controller
->resetCache();
foreach ([
0,
2,
] as $key) {
$vid = $vids[$key];
$revision = $controller
->loadRevision($vid);
$this
->assertEqual(count($revision->{$this->fieldTestData->field_name}), $cardinality, "The test entity revision {$vid} has {$cardinality} values.");
}
// Confirm the current revision still loads
$controller
->resetCache();
$current = $controller
->load($entity
->id());
$this
->assertEqual(count($current->{$this->fieldTestData->field_name}), $cardinality, "The test entity current revision has {$cardinality} values.");
// Delete all field data, confirm nothing loads
$entity
->delete();
$controller
->resetCache();
foreach ([
0,
1,
2,
] as $vid) {
$revision = $controller
->loadRevision($vid);
$this
->assertNull($revision);
}
$this
->assertNull($controller
->load($entity
->id()));
}