function PageCacheTagsIntegrationTest::testPageCacheTags in Zircon Profile 8
Same name and namespace in other branches
- 8.0 core/modules/page_cache/src/Tests/PageCacheTagsIntegrationTest.php \Drupal\page_cache\Tests\PageCacheTagsIntegrationTest::testPageCacheTags()
Test that cache tags are properly bubbled up to the page level.
File
- core/
modules/ page_cache/ src/ Tests/ PageCacheTagsIntegrationTest.php, line 42 - Contains \Drupal\page_cache\Tests\PageCacheTagsIntegrationTest.
Class
- PageCacheTagsIntegrationTest
- Enables the page cache and tests its cache tags in various scenarios.
Namespace
Drupal\page_cache\TestsCode
function testPageCacheTags() {
// Create two nodes.
$author_1 = $this
->drupalCreateUser();
$node_1 = $this
->drupalCreateNode(array(
'uid' => $author_1
->id(),
'title' => 'Node 1',
'body' => array(
0 => array(
'value' => 'Body 1',
'format' => 'basic_html',
),
),
'promote' => NODE_PROMOTED,
));
$author_2 = $this
->drupalCreateUser();
$node_2 = $this
->drupalCreateNode(array(
'uid' => $author_2
->id(),
'title' => 'Node 2',
'body' => array(
0 => array(
'value' => 'Body 2',
'format' => 'full_html',
),
),
'promote' => NODE_PROMOTED,
));
// Place a block, but only make it visible on full node page 2.
$block = $this
->drupalPlaceBlock('views_block:comments_recent-block_1', array(
'visibility' => array(
'request_path' => array(
'pages' => '/node/' . $node_2
->id(),
),
),
));
$cache_contexts = [
'languages:' . LanguageInterface::TYPE_INTERFACE,
'route',
'theme',
'timezone',
'user',
// The placed block is only visible on certain URLs through a visibility
// condition.
'url',
];
// Full node page 1.
$this
->assertPageCacheContextsAndTags($node_1
->urlInfo(), $cache_contexts, array(
'rendered',
'block_view',
'config:block_list',
'config:block.block.bartik_branding',
'config:block.block.bartik_breadcrumbs',
'config:block.block.bartik_content',
'config:block.block.bartik_tools',
'config:block.block.bartik_footer',
'config:block.block.bartik_help',
'config:block.block.bartik_search',
'config:block.block.' . $block
->id(),
'config:block.block.bartik_powered',
'config:block.block.bartik_main_menu',
'config:block.block.bartik_account_menu',
'config:block.block.bartik_messages',
'config:block.block.bartik_local_actions',
'config:block.block.bartik_local_tasks',
'config:block.block.bartik_page_title',
'node_view',
'node:' . $node_1
->id(),
'user:0',
'user:' . $author_1
->id(),
'config:filter.format.basic_html',
'config:search.settings',
'config:system.menu.account',
'config:system.menu.tools',
'config:system.menu.footer',
'config:system.menu.main',
'config:system.site',
// FinishResponseSubscriber adds this cache tag to responses that have the
// 'user.permissions' cache context for anonymous users.
'config:user.role.anonymous',
));
// Render the view block adds the languages cache context.
$cache_contexts[] = 'languages:' . LanguageInterface::TYPE_CONTENT;
// Full node page 2.
$this
->assertPageCacheContextsAndTags($node_2
->urlInfo(), $cache_contexts, array(
'rendered',
'block_view',
'config:block_list',
'config:block.block.bartik_branding',
'config:block.block.bartik_breadcrumbs',
'config:block.block.bartik_content',
'config:block.block.bartik_tools',
'config:block.block.bartik_help',
'config:block.block.bartik_search',
'config:block.block.' . $block
->id(),
'config:block.block.bartik_footer',
'config:block.block.bartik_powered',
'config:block.block.bartik_main_menu',
'config:block.block.bartik_account_menu',
'config:block.block.bartik_messages',
'config:block.block.bartik_local_actions',
'config:block.block.bartik_local_tasks',
'config:block.block.bartik_page_title',
'node_view',
'node:' . $node_2
->id(),
'user:' . $author_2
->id(),
'config:filter.format.full_html',
'config:search.settings',
'config:system.menu.account',
'config:system.menu.tools',
'config:system.menu.footer',
'config:system.menu.main',
'config:system.site',
'comment_list',
'node_list',
'config:views.view.comments_recent',
// FinishResponseSubscriber adds this cache tag to responses that have the
// 'user.permissions' cache context for anonymous users.
'config:user.role.anonymous',
'user:0',
));
}