EntityUUIDTest.php in Drupal 9
File
core/tests/Drupal/KernelTests/Core/Entity/EntityUUIDTest.php
View source
<?php
namespace Drupal\KernelTests\Core\Entity;
class EntityUUIDTest extends EntityKernelTestBase {
protected function setUp() : void {
parent::setUp();
foreach (entity_test_entity_types() as $entity_type_id) {
if ($entity_type_id != 'entity_test') {
$this
->installEntitySchema($entity_type_id);
}
}
}
public function testCRUD() {
foreach (entity_test_entity_types() as $entity_type) {
$this
->assertCRUD($entity_type);
}
}
protected function assertCRUD($entity_type) {
$uuid_service = $this->container
->get('uuid');
$uuid = $uuid_service
->generate();
$custom_entity = $this->container
->get('entity_type.manager')
->getStorage($entity_type)
->create([
'name' => $this
->randomMachineName(),
'uuid' => $uuid,
]);
$this
->assertSame($uuid, $custom_entity
->uuid());
$custom_entity
->save();
$entity = $this->container
->get('entity_type.manager')
->getStorage($entity_type)
->create([
'name' => $this
->randomMachineName(),
]);
$uuid = $entity
->uuid();
$this
->assertNotEmpty($uuid);
$this
->assertNotEquals($custom_entity
->uuid(), $uuid);
$entity
->save();
$this
->assertSame($uuid, $entity
->uuid());
$storage = $this->container
->get('entity_type.manager')
->getStorage($entity_type);
$storage
->resetCache([
$entity
->id(),
]);
$entity_loaded = $storage
->load($entity
->id());
$this
->assertSame($uuid, $entity_loaded
->uuid());
$entity_loaded_by_uuid = \Drupal::service('entity.repository')
->loadEntityByUuid($entity_type, $uuid, TRUE);
$this
->assertSame($uuid, $entity_loaded_by_uuid
->uuid());
$this
->assertEquals($entity_loaded
->id(), $entity_loaded_by_uuid
->id());
$entity_duplicate = $entity
->createDuplicate();
foreach ($entity
->getFields() as $property => $value) {
switch ($property) {
case 'uuid':
$this
->assertNotNull($entity_duplicate
->uuid());
$this
->assertNotNull($entity
->uuid());
$this
->assertNotEquals($entity
->uuid(), $entity_duplicate
->uuid());
break;
case 'id':
$this
->assertNull($entity_duplicate
->id());
$this
->assertNotNull($entity
->id());
$this
->assertNotEquals($entity
->id(), $entity_duplicate
->id());
break;
case 'revision_id':
$this
->assertNull($entity_duplicate
->getRevisionId());
$this
->assertNotNull($entity
->getRevisionId());
$this
->assertNotEquals($entity
->getRevisionId(), $entity_duplicate
->getRevisionId());
$this
->assertNotEquals($entity->{$property}
->getValue(), $entity_duplicate->{$property}
->getValue());
break;
default:
$this
->assertEquals($entity->{$property}
->getValue(), $entity_duplicate->{$property}
->getValue());
}
}
$entity_duplicate
->save();
$this
->assertNotEquals($entity_duplicate
->id(), $entity
->id());
}
}