trait EntityTrait

Provides helper methods for working with entities in tests.

Expects the $entityTypeManager class property.

Hierarchy

1 file declares its use of EntityTrait
EntityKernelTestBase.php in core/tests/Drupal/KernelTests/Core/Entity/EntityKernelTestBase.php

File

core/tests/Drupal/Tests/EntityTrait.php, line 14

Namespace

Drupal\Tests
View source
trait EntityTrait {
    
    /**
     * A list of entity IDs generated by self::generateRandomEntityId().
     *
     * @var array
     */
    protected array $generatedIds = [];
    
    /**
     * Reloads the given entity from the storage and returns it.
     *
     * @param \Drupal\Core\Entity\EntityInterface $entity
     *   The entity to be reloaded.
     *
     * @return \Drupal\Core\Entity\EntityInterface
     *   The reloaded entity.
     */
    protected function reloadEntity(EntityInterface $entity) : EntityInterface {
        $controller = $this->entityTypeManager
            ->getStorage($entity->getEntityTypeId());
        $controller->resetCache([
            $entity->id(),
        ]);
        return $controller->load($entity->id());
    }
    
    /**
     * Generates a random ID avoiding collisions.
     *
     * @param bool $string
     *   (optional) Whether the id should have string type. Defaults to FALSE.
     *
     * @return int|string
     *   The entity identifier.
     */
    protected function generateRandomEntityId(bool $string = FALSE) : int|string {
        srand(time());
        do {
            // 0x7FFFFFFF is the maximum allowed value for integers that works for all
            // Drupal supported databases and is known to work for other databases
            // like SQL Server 2014 and Oracle 10 too.
            $id = $string ? $this->randomMachineName() : mt_rand(1, 0x7fffffff);
        } while (isset($this->generatedIds[$id]));
        $this->generatedIds[$id] = $id;
        return $id;
    }

}

Members

Title Sort descending Modifiers Object type Summary
EntityTrait::$generatedIds protected property A list of entity IDs generated by self::generateRandomEntityId().
EntityTrait::generateRandomEntityId protected function Generates a random ID avoiding collisions.
EntityTrait::reloadEntity protected function Reloads the given entity from the storage and returns it.

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.