RenderCacheTest.php in Zircon Profile 8.0
File
core/modules/system/src/Tests/Render/RenderCacheTest.php
View source
<?php
namespace Drupal\system\Tests\Render;
use Drupal\simpletest\KernelTestBase;
use Drupal\simpletest\UserCreationTrait;
class RenderCacheTest extends KernelTestBase {
use UserCreationTrait;
public static $modules = [
'user',
'system',
];
protected function setUp() {
parent::setUp();
$this
->installEntitySchema('user');
$this
->installConfig([
'user',
]);
$this
->installSchema('system', [
'sequences',
]);
}
public function testUser1PermissionContext() {
$this
->doTestUser1WithContexts([
'user.permissions',
]);
}
public function testUser1RolesContext() {
$this
->doTestUser1WithContexts([
'user.roles',
]);
}
protected function doTestUser1WithContexts($contexts) {
$user1 = $this
->createUser();
$this
->assertEqual($user1
->id(), 1);
$first_authenticated_user = $this
->createUser();
$second_authenticated_user = $this
->createUser();
$admin_user = $this
->createUser([], NULL, TRUE);
$this
->assertEqual($user1
->getRoles(), $first_authenticated_user
->getRoles(), 'User 1 has the same roles as an authenticated user.');
\Drupal::service('account_switcher')
->switchTo($user1);
$test_element = [
'#cache' => [
'keys' => [
'test',
],
'contexts' => $contexts,
],
];
$element = $test_element;
$element['#markup'] = 'content for user 1';
$output = \Drupal::service('renderer')
->renderRoot($element);
$this
->assertEqual($output, 'content for user 1');
$element = $test_element;
$element['#markup'] = 'should not be used';
$output = \Drupal::service('renderer')
->renderRoot($element);
$this
->assertEqual($output, 'content for user 1');
\Drupal::service('account_switcher')
->switchBack();
\Drupal::service('account_switcher')
->switchTo($first_authenticated_user);
$element = $test_element;
$element['#markup'] = 'content for authenticated users';
$output = \Drupal::service('renderer')
->renderRoot($element);
$this
->assertEqual($output, 'content for authenticated users');
\Drupal::service('account_switcher')
->switchBack();
\Drupal::service('account_switcher')
->switchTo($second_authenticated_user);
$element = $test_element;
$element['#markup'] = 'should not be used';
$output = \Drupal::service('renderer')
->renderRoot($element);
$this
->assertEqual($output, 'content for authenticated users');
\Drupal::service('account_switcher')
->switchBack();
\Drupal::service('account_switcher')
->switchTo($admin_user);
$element = $test_element;
$element['#markup'] = 'content for admin user';
$output = \Drupal::service('renderer')
->renderRoot($element);
$this
->assertEqual($output, 'content for admin user');
\Drupal::service('account_switcher')
->switchBack();
}
}