depcalc-8.x-1.x-dev/tests/src/Functional/DepcalcClearCacheTest.php
tests/src/Functional/DepcalcClearCacheTest.php
<?php
namespace Drupal\Tests\depcalc_ui\Functional;
use Drupal\Tests\BrowserTestBase;
use Drupal\Tests\depcalc\Kernel\DependencyHelperTrait;
/**
* Tests that the depcalc clear cache works.
*
* @group depcalc
*/
class DepcalcClearCacheTest extends BrowserTestBase {
use DependencyHelperTrait;
/**
* User that has administer permission.
*
* @var \Drupal\Core\Session\AccountInterface
*/
protected $authorizedUser;
/**
* User that is $unauthorizedUser.
*
* @var \Drupal\Core\Session\AccountInterface
*/
protected $unauthorizedUser;
/**
* The Depcalc Cache backend.
*
* @var \Drupal\depcalc\Cache\DepcalcCacheBackend
*/
protected $depcalcCache;
/**
* The database connection.
*
* @var \Drupal\Core\Database\Connection
*/
protected $database;
/**
* The entity uuid.
*
* @var string
*/
protected $uuid;
/**
* {@inheritdoc}
*/
protected $defaultTheme = 'stark';
/**
* Modules to enable.
*
* @var array
*/
protected static $modules = [
'depcalc',
'depcalc_ui',
'node',
'user',
];
/**
* {@inheritdoc}
*/
protected function setUp(): void {
parent::setUp();
$this->calculator = $this->container->get('entity.dependency.calculator');
$this->depcalcCache = $this->container->get('cache.depcalc');
$this->database = $this->container->get('database');
// Create test node article.
$this->uuid = '2d666602-74c0-4d83-a6ef-d181fd562291';
$entity_values = [
'type' => 'article',
'title' => 'A test article',
'uuid' => $this->uuid,
];
$entity_type_manager = $this->container->get('entity_type.manager');
$entity = $entity_type_manager->getStorage('node')->create($entity_values);
$entity->save();
$this->getEntityDependencies($entity);
// User to clear caches.
$this->authorizedUser = $this->drupalCreateUser([], NULL, TRUE);
$this->unauthorizedUser = $this->drupalCreateUser();
$this->drupalLogin($this->authorizedUser);
}
/**
* Tests the depcalc clear cache button.
*/
public function testClearCacheForm(): void {
$session = $this->assertSession();
$this->drupalGet('admin/config/development/performance');
$session->statusCodeEquals(200);
$cache = $this->depcalcCache->get($this->uuid);
$this->assertNotEmpty($cache);
$session->buttonExists('Clear all caches');
$this->submitForm([], 'Clear all caches');
$cache = $this->depcalcCache->get($this->uuid);
$this->assertNotEmpty($cache);
$session->buttonExists('Clear depcalc cache');
$this->submitForm([], 'Clear depcalc cache');
$session->pageTextContains('Cleared all depcalc cache.');
$cache = $this->database->select('cache_depcalc', 'c')->fields('c')->execute()->fetchAll();
$this->assertEmpty($cache);
$this->drupalLogout();
$this->drupalLogin($this->unauthorizedUser);
$this->drupalGet('admin/config/development/performance');
$session->pageTextContains('Access denied');
$session->statusCodeEquals(403);
}
}
