tome-8.x-1.x-dev/modules/tome_static/tests/src/Kernel/StaticCacheTest.php
modules/tome_static/tests/src/Kernel/StaticCacheTest.php
<?php
namespace Drupal\Tests\tome_static\Kernel;
use Drupal\Core\Site\Settings;
use Drupal\node\Entity\Node;
use Drupal\Tests\tome_base\Kernel\TestBase;
use Drupal\user\Entity\User;
/**
* Tests that static cache works.
*
* @coversDefaultClass \Drupal\tome_static\StaticCache
* @group tome
*/
class StaticCacheTest extends TestBase {
/**
* {@inheritdoc}
*/
protected static $modules = [
'tome_static',
'node',
];
/**
* {@inheritdoc}
*/
public function setUp(): void {
parent::setUp();
User::create([
'uid' => 0,
'status' => 0,
'name' => '',
])->save();
}
/**
* @covers \Drupal\tome_static\StaticGenerator::getPaths
*/
public function testCache() {
/** @var \Drupal\tome_static\StaticGenerator $static */
$static = \Drupal::service('tome_static.generator');
$base_dir = Settings::get('tome_static_directory');
/** @var \Drupal\node\Entity\Node $article */
$article = Node::create(['type' => 'article', 'title' => 'My article']);
$article->save();
$path = '_entity:node:en:' . $article->id();
$this->assertContains($path, $static->getPaths());
$static->requestPath($path);
$this->assertNotContains($path, $static->getPaths());
$article->save();
$this->assertContains($path, $static->getPaths());
$static->requestPath($path);
$this->assertNotContains($path, $static->getPaths());
$settings = Settings::getInstance() ? Settings::getAll() : [];
$settings['tome_static_cache_exclude'] = [$path];
new Settings($settings);
$this->assertContains($path, $static->getPaths());
$settings['tome_static_cache_exclude'] = ['/_entity:node:.*/'];
new Settings($settings);
$this->assertContains($path, $static->getPaths());
$settings['tome_static_cache_exclude'] = [];
new Settings($settings);
$this->assertNotContains($path, $static->getPaths());
$this->assertFileExists("$base_dir/node/1/index.html");
$article->delete();
$static->cleanupStaticDirectory();
$this->assertFileDoesNotExist("$base_dir/node/1/index.html");
}
}
