public function ContentEntityCloneTest::testEntityKeysModifications in Drupal 8
Same name and namespace in other branches
- 9 core/tests/Drupal/KernelTests/Core/Entity/ContentEntityCloneTest.php \Drupal\KernelTests\Core\Entity\ContentEntityCloneTest::testEntityKeysModifications()
- 10 core/tests/Drupal/KernelTests/Core/Entity/ContentEntityCloneTest.php \Drupal\KernelTests\Core\Entity\ContentEntityCloneTest::testEntityKeysModifications()
Tests modifications on entity keys of a cloned entity object.
File
- core/
tests/ Drupal/ KernelTests/ Core/ Entity/ ContentEntityCloneTest.php, line 184
Class
- ContentEntityCloneTest
- Tests proper cloning of content entities.
Namespace
Drupal\KernelTests\Core\EntityCode
public function testEntityKeysModifications() {
// Create a test entity with a translation, which will internally trigger
// entity cloning for the new translation and create references for some of
// the entity properties.
$entity = EntityTestMulRev::create([
'name' => 'original-name',
'uuid' => 'original-uuid',
'language' => 'en',
]);
$entity
->addTranslation('de');
$entity
->save();
// Clone the entity.
$clone = clone $entity;
// Alter a non-translatable and a translatable entity key fields of the
// cloned entity and assert that retrieving the value through the entity
// keys local cache will be different for the cloned and the original
// entity.
// We first have to call the ::uuid() and ::label() method on the original
// entity as it is going to cache the field values into the $entityKeys and
// $translatableEntityKeys properties of the entity object and we want to
// check that the cloned and the original entity aren't sharing the same
// reference to those local cache properties.
$uuid_field_name = $entity
->getEntityType()
->getKey('uuid');
$this
->assertFalse($entity
->getFieldDefinition($uuid_field_name)
->isTranslatable());
$clone->{$uuid_field_name}->value = 'clone-uuid';
$this
->assertEquals('original-uuid', $entity
->uuid());
$this
->assertEquals('clone-uuid', $clone
->uuid());
$label_field_name = $entity
->getEntityType()
->getKey('label');
$this
->assertTrue($entity
->getFieldDefinition($label_field_name)
->isTranslatable());
$clone->{$label_field_name}->value = 'clone-name';
$this
->assertEquals('original-name', $entity
->label());
$this
->assertEquals('clone-name', $clone
->label());
}