You are here

public function CacheCollectorTest::testUpdateCacheClearTags in Drupal 8

Tests a clear of the cache collector using tags.

File

core/tests/Drupal/Tests/Core/Cache/CacheCollectorTest.php, line 390

Class

CacheCollectorTest
@coversDefaultClass \Drupal\Core\Cache\CacheCollector @group Cache

Namespace

Drupal\Tests\Core\Cache

Code

public function testUpdateCacheClearTags() {
  $key = $this
    ->randomMachineName();
  $value = $this
    ->randomMachineName();
  $tags = [
    $this
      ->randomMachineName(),
  ];
  $this->collector = new CacheCollectorHelper($this->cid, $this->cacheBackend, $this->lock, $tags);

  // Set the data and request it.
  $this->collector
    ->setCacheMissData($key, $value);
  $this
    ->assertEquals($value, $this->collector
    ->get($key));
  $this
    ->assertEquals($value, $this->collector
    ->get($key));

  // Should have been added to the storage and only be requested once.
  $this
    ->assertEquals(1, $this->collector
    ->getCacheMisses());

  // Clear the collected cache using the tags, should call it again.
  $this->cacheBackend
    ->expects($this
    ->never())
    ->method('delete');
  $this->cacheTagsInvalidator
    ->expects($this
    ->once())
    ->method('invalidateTags')
    ->with($tags);
  $this->collector
    ->clear();
  $this
    ->assertEquals($value, $this->collector
    ->get($key));
  $this
    ->assertEquals(2, $this->collector
    ->getCacheMisses());
}