examples-3.x-dev/modules/cache_example/tests/src/Functional/CacheExampleTest.php
modules/cache_example/tests/src/Functional/CacheExampleTest.php
<?php
namespace Drupal\Tests\cache_example\Functional;
use Drupal\Tests\BrowserTestBase;
/**
* Tests for the cache_example module.
*
* @ingroup cache_example
*
* @group cache_example
* @group examples
*/
class CacheExampleTest extends BrowserTestBase {
/**
* {@inheritdoc}
*/
protected $defaultTheme = 'stark';
/**
* Modules to enable.
*
* @var array
*/
protected static $modules = ['cache_example'];
/**
* The installation profile to use with this test.
*
* @var string
*/
protected $profile = 'minimal';
/**
* Test menu links and routes.
*
* Test the following:
* - A link to the cache_example in the Tools menu.
* - That you can successfully access the cache_example form.
*/
public function testCacheExampleMenu() {
$assert = $this->assertSession();
// Test for a link to the cache_example in the Tools menu.
$this->drupalGet('');
$assert->statusCodeEquals(200);
$assert->linkByHrefExists('examples/cache-example');
// Verify if the can successfully access the cache_example form.
$this->drupalGet('examples/cache-example');
$assert->statusCodeEquals(200);
}
/**
* Test that our caches function.
*
* Does the following:
* - Load cache example page and test if displaying uncached version.
* - Reload once again and test if displaying cached version.
* - Find reload link and click on it.
* - Clear cache at the end and test if displaying uncached version again.
*/
public function testCacheExampleBasic() {
$assert = $this->assertSession();
// We need administrative privileges to clear the cache.
$admin_user = $this->drupalCreateUser(['administer site configuration']);
$this->drupalLogin($admin_user);
// Get initial page cache example page, first time accessed,
// and assert uncached output.
$this->drupalGet('examples/cache-example');
$assert->pageTextContains('Source: actual file search');
// Reload the page; the number should be cached.
$this->drupalGet('examples/cache-example');
$assert->pageTextContains('Source: cached');
// Now push the button to remove the count.
$this->drupalGet('examples/cache-example');
$this->submitForm([], 'Explicitly remove cached file count');
$assert->pageTextContains('Source: actual file search');
// Create a cached item. First make sure it doesn't already exist.
$assert->pageTextContains('Cache item does not exist');
$this->drupalGet('examples/cache-example');
$this->submitForm(['expiration' => -10], 'Create a cache item with this expiration');
// We should now have an already-expired item. Automatically invalid.
$assert->pageTextContains('Cache_item is invalid');
// Now do the expiration operation.
$this->drupalGet('examples/cache-example');
$this->submitForm(['cache_clear_type' => 'expire'], 'Clear or expire cache');
// And verify that it was removed.
$assert->pageTextContains('Cache item does not exist');
// Create a cached item. This time we'll make it not expire.
$this->drupalGet('examples/cache-example');
$this->submitForm(['expiration' => 'never_remove'], 'Create a cache item with this expiration');
// We should now have an never-remove item.
$assert->pageTextContains('Cache item exists and is set to expire at Never expires');
// Now do the expiration operation.
$this->drupalGet('examples/cache-example');
$this->submitForm(['cache_clear_type' => 'expire'], 'Clear or expire cache');
// And verify that it was not removed.
$assert->pageTextContains('Cache item exists and is set to expire at Never expires');
// Now do tag invalidation.
$this->drupalGet('examples/cache-example');
$this->submitForm(['cache_clear_type' => 'remove_tag'], 'Clear or expire cache');
// And verify that it was invalidated.
$assert->pageTextContains('Cache_item is invalid');
// Do the hard delete.
$this->drupalGet('examples/cache-example');
$this->submitForm(['cache_clear_type' => 'remove_all'], 'Clear or expire cache');
// And verify that it was removed.
$assert->pageTextContains('Cache item does not exist');
}
}
