trait CacheTestTrait

Provides helper methods for interacting with cache backends.

Hierarchy

2 files declare their use of CacheTestTrait
EntityCacheTagsTestBase.php in core/modules/system/tests/src/Functional/Entity/EntityCacheTagsTestBase.php
ShortcutCacheTagsTest.php in core/modules/shortcut/tests/src/Kernel/ShortcutCacheTagsTest.php

File

core/modules/system/tests/src/Traits/CacheTestTrait.php, line 13

Namespace

Drupal\Tests\system\Traits
View source
trait CacheTestTrait {
  
  /**
   * Retrieves the render cache backend as a variation cache.
   *
   * This is how Drupal\Core\Render\RenderCache uses the render cache backend.
   *
   * @return \Drupal\Core\Cache\VariationCacheInterface
   *   The render cache backend as a variation cache.
   */
  protected function getRenderVariationCache() : VariationCacheInterface {
    /** @var \Drupal\Core\Cache\VariationCacheFactoryInterface $variation_cache_factory */
    $variation_cache_factory = \Drupal::service('variation_cache_factory');
    return $variation_cache_factory->get('render');
  }
  
  /**
   * Retrieves the default cache backend as a variation cache.
   *
   * @return \Drupal\Core\Cache\VariationCacheInterface
   *   The default cache backend as a variation cache.
   */
  protected function getDefaultVariationCache() : VariationCacheInterface {
    /** @var \Drupal\Core\Cache\VariationCacheFactoryInterface $variation_cache_factory */
    $variation_cache_factory = \Drupal::service('variation_cache_factory');
    return $variation_cache_factory->get('default');
  }
  
  /**
   * Verify that a given render cache entry exists with the correct cache tags.
   *
   * @param string[] $keys
   *   The render cache item keys.
   * @param array $tags
   *   An array of expected cache tags.
   * @param \Drupal\Core\Cache\CacheableDependencyInterface $cacheability
   *   The initial cacheability the item was rendered with.
   */
  protected function verifyRenderCache(array $keys, array $tags, CacheableDependencyInterface $cacheability) : void {
    $this->verifyCache($this->getRenderVariationCache(), $keys, $tags, $cacheability);
  }
  
  /**
   * Verify that a given default cache entry exists with the correct cache tags.
   *
   * @param string[] $keys
   *   The cache item keys.
   * @param array $tags
   *   An array of expected cache tags.
   * @param \Drupal\Core\Cache\CacheableDependencyInterface $cacheability
   *   The initial cacheability for the item.
   */
  protected function verifyDefaultCache(array $keys, array $tags, CacheableDependencyInterface $cacheability) : void {
    $this->verifyCache($this->getDefaultVariationCache(), $keys, $tags, $cacheability);
  }
  
  /**
   * Verify that a given cache entry exists, with the correct cache tags.
   *
   * @param \Drupal\Core\Cache\VariationCacheInterface $cache_bin
   *   The cache bin to check.
   * @param string[] $keys
   *   The cache item keys.
   * @param array $tags
   *   An array of expected cache tags.
   * @param \Drupal\Core\Cache\CacheableDependencyInterface $cacheability
   *   The initial cacheability for the item.
   */
  private function verifyCache(VariationCacheInterface $cache_bin, array $keys, array $tags, CacheableDependencyInterface $cacheability) : void {
    $cache_entry = $cache_bin->get($keys, $cacheability);
    $this->assertInstanceOf(\stdClass::class, $cache_entry);
    sort($cache_entry->tags);
    sort($tags);
    $this->assertSame($cache_entry->tags, $tags);
  }

}

Members

Title Sort descending Modifiers Object type Summary
CacheTestTrait::getDefaultVariationCache protected function Retrieves the default cache backend as a variation cache.
CacheTestTrait::getRenderVariationCache protected function Retrieves the render cache backend as a variation cache.
CacheTestTrait::verifyCache private function Verify that a given cache entry exists, with the correct cache tags.
CacheTestTrait::verifyDefaultCache protected function Verify that a given default cache entry exists with the correct cache tags.
CacheTestTrait::verifyRenderCache protected function Verify that a given render cache entry exists with the correct cache tags.

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