Skip to content
Snippets Groups Projects
Verified Commit adb813c5 authored by Théodore Biadala's avatar Théodore Biadala
Browse files

Issue #3224276 by joachim, xjm, mglaman, smustgrave, kristiaanvandeneynde,...

Issue #3224276 by joachim, xjm, mglaman, smustgrave, kristiaanvandeneynde, quietone: Move useful helper methods for working with entities from EntityKernelTestBase to a trait
parent aae2ffb6
No related branches found
No related tags found
20 merge requests!11131[10.4.x-only-DO-NOT-MERGE]: Issue ##2842525 Ajax attached to Views exposed filter form does not trigger callbacks,!9470[10.3.x-only-DO-NOT-MERGE]: #3331771 Fix file_get_contents(): Passing null to parameter,!8736Update the Documention As per the Function uses.,!8513Issue #3453786: DefaultSelection should document why values for target_bundles NULL and [] behave as they do,!3878Removed unused condition head title for views,!3818Issue #2140179: $entity->original gets stale between updates,!3742Issue #3328429: Create item list field formatter for displaying ordered and unordered lists,!3731Claro: role=button on status report items,!3154Fixes #2987987 - CSRF token validation broken on routes with optional parameters.,!3133core/modules/system/css/components/hidden.module.css,!2964Issue #2865710 : Dependencies from only one instance of a widget are used in display modes,!2812Issue #3312049: [Followup] Fix Drupal.Commenting.FunctionComment.MissingReturnType returns for NULL,!2378Issue #2875033: Optimize joins and table selection in SQL entity query implementation,!2062Issue #3246454: Add weekly granularity to views date sort,!10223132456: Fix issue where views instances are emptied before an ajax request is complete,!877Issue #2708101: Default value for link text is not saved,!617Issue #3043725: Provide a Entity Handler for user cancelation,!579Issue #2230909: Simple decimals fail to pass validation,!560Move callback classRemove outside of the loop,!555Issue #3202493
Pipeline #259627 passed with warnings
Pipeline: drupal

#259628

    ......@@ -4,14 +4,16 @@
    namespace Drupal\KernelTests\Core\Entity;
    use Drupal\Core\Entity\EntityInterface;
    use Drupal\KernelTests\KernelTestBase;
    use Drupal\Tests\EntityTrait;
    use Drupal\Tests\user\Traits\UserCreationTrait;
    /**
    * Defines an abstract test base for entity kernel tests.
    */
    abstract class EntityKernelTestBase extends KernelTestBase {
    use EntityTrait;
    use UserCreationTrait {
    checkPermissions as drupalCheckPermissions;
    createAdminRole as drupalCreateAdminRole;
    ......@@ -43,13 +45,6 @@ abstract class EntityKernelTestBase extends KernelTestBase {
    */
    protected $entityTypeManager;
    /**
    * A list of generated identifiers.
    *
    * @var array
    */
    protected $generatedIds = [];
    /**
    * The state service.
    *
    ......@@ -112,21 +107,6 @@ protected function createUser(array $permissions = [], $name = NULL, bool $admin
    return $this->drupalCreateUser($permissions, $name, $admin, $values);
    }
    /**
    * 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) {
    $controller = $this->entityTypeManager->getStorage($entity->getEntityTypeId());
    $controller->resetCache([$entity->id()]);
    return $controller->load($entity->id());
    }
    /**
    * Returns the entity_test hook invocation info.
    *
    ......@@ -172,25 +152,4 @@ protected function refreshServices() {
    $this->state = $this->container->get('state');
    }
    /**
    * 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($string = FALSE) {
    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;
    }
    }
    <?php
    declare(strict_types=1);
    namespace Drupal\Tests;
    use Drupal\Core\Entity\EntityInterface;
    /**
    * Provides helper methods for working with entities in tests.
    *
    * Expects the $entityTypeManager class property.
    */
    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;
    }
    }
    0% Loading or .
    You are about to add 0 people to the discussion. Proceed with caution.
    Finish editing this message first!
    Please register or to comment