depcalc-8.x-1.x-dev/tests/src/Kernel/EventSubscriber/InvalidateDepcalcCache/InvalidateDepcalcCacheTest.php
tests/src/Kernel/EventSubscriber/InvalidateDepcalcCache/InvalidateDepcalcCacheTest.php
<?php
namespace Drupal\Tests\depcalc\Kernel;
use Drupal\Core\Cache\Cache;
use Drupal\Core\Entity\EntityInterface;
use Drupal\depcalc\DependentEntityWrapper;
use Drupal\depcalc\Event\InvalidateDepcalcCacheEvent;
use Drupal\depcalc\EventSubscriber\InvalidateDepcalcCache\InvalidateDepcalcCache;
use Drupal\KernelTests\KernelTestBase;
use Drupal\Tests\node\Traits\ContentTypeCreationTrait;
use Drupal\Tests\node\Traits\NodeCreationTrait;
/**
* Tests for InvalidateDepcalcCache.
*
* @group depcalc
*/
class InvalidateDepcalcCacheTest extends KernelTestBase {
use NodeCreationTrait;
use ContentTypeCreationTrait;
/**
* The entity.
*
* @var \Drupal\Core\Entity\EntityInterface
*/
protected EntityInterface $entity;
/**
* {@inheritdoc}
*/
protected static $modules = [
'field',
'filter',
'depcalc',
'node',
'text',
'user',
'system',
];
/**
* {@inheritdoc}
*
* @throws \Drupal\Core\Entity\EntityStorageException
*/
protected function setUp(): void {
parent::setUp();
$this->installConfig('node');
$this->installConfig('field');
$this->installConfig('filter');
$this->installSchema('node', 'node_access');
$this->installEntitySchema('node');
$this->installEntitySchema('user');
$this->createContentType(
[
'type' => 'page',
'name' => 'Page',
]
)->save();
$this->entity = $this->createNode(
[
'title' => 'Landing Page 1',
'type' => 'page',
]
);
$this->entity->save();
}
/**
* Tests depcalc cache invalidations.
*/
public function testInvalidateDepcalcCache() {
$dependency = new DependentEntityWrapper($this->entity);
$cache_bin = $this->container->get('cache.depcalc');
$cache_bin->set($dependency->getUuid(), $dependency, Cache::PERMANENT, array_keys($dependency->getDependencies()));
$cache = $cache_bin->get($this->entity->uuid());
$this->assertNotFalse($cache);
$event = new InvalidateDepcalcCacheEvent($this->entity);
/**
* @var \Drupal\Core\Cache\CacheTagsInvalidatorInterface $cache_tag_invalidator
*/
$cache_tag_invalidator = $this->container->get('cache_tags.invalidator');
$sut = new InvalidateDepcalcCache($cache_tag_invalidator, $cache_bin);
$sut->onInvalidateDepcalcCache($event);
$cache = $cache_bin->get($this->entity->uuid());
$this->assertFalse($cache);
}
}
