3 namespace Drupal\Tests\page_cache\Functional;
5 use Drupal\Core\EventSubscriber\MainContentViewSubscriber;
6 use Drupal\Core\Language\LanguageInterface;
7 use Drupal\node\NodeInterface;
8 use Drupal\Tests\system\Functional\Cache\AssertPageCacheContextsAndTagsTrait;
9 use Drupal\Tests\BrowserTestBase;
12 * Enables the page cache and tests its cache tags in various scenarios.
15 * @see \Drupal\Tests\page_cache\Functional\PageCacheTest
16 * @see \Drupal\node\Tests\NodePageCacheTest
17 * @see \Drupal\menu_ui\Tests\MenuTest::testMenuBlockPageCacheTags()
19 class PageCacheTagsIntegrationTest extends BrowserTestBase {
21 use AssertPageCacheContextsAndTagsTrait;
23 protected $profile = 'standard';
25 protected $dumpHeaders = TRUE;
30 protected function setUp() {
33 $this->enablePageCaching();
37 * Test that cache tags are properly bubbled up to the page level.
39 public function testPageCacheTags() {
41 $author_1 = $this->drupalCreateUser();
42 $node_1 = $this->drupalCreateNode([
43 'uid' => $author_1->id(),
46 0 => ['value' => 'Body 1', 'format' => 'basic_html'],
48 'promote' => NodeInterface::PROMOTED,
50 $author_2 = $this->drupalCreateUser();
51 $node_2 = $this->drupalCreateNode([
52 'uid' => $author_2->id(),
55 0 => ['value' => 'Body 2', 'format' => 'full_html'],
57 'promote' => NodeInterface::PROMOTED,
60 // Place a block, but only make it visible on full node page 2.
61 $block = $this->drupalPlaceBlock('views_block:comments_recent-block_1', [
64 'pages' => '/node/' . $node_2->id(),
70 'languages:' . LanguageInterface::TYPE_INTERFACE,
75 // The placed block is only visible on certain URLs through a visibility
78 'url.query_args:' . MainContentViewSubscriber::WRAPPER_FORMAT,
79 // These two cache contexts are added by BigPipe.
80 'cookies:big_pipe_nojs',
85 $this->assertPageCacheContextsAndTags($node_1->urlInfo(), $cache_contexts, [
90 'config:block.block.bartik_branding',
91 'config:block.block.bartik_breadcrumbs',
92 'config:block.block.bartik_content',
93 'config:block.block.bartik_tools',
94 'config:block.block.bartik_footer',
95 'config:block.block.bartik_help',
96 'config:block.block.bartik_search',
97 'config:block.block.' . $block->id(),
98 'config:block.block.bartik_powered',
99 'config:block.block.bartik_main_menu',
100 'config:block.block.bartik_account_menu',
101 'config:block.block.bartik_messages',
102 'config:block.block.bartik_local_actions',
103 'config:block.block.bartik_local_tasks',
104 'config:block.block.bartik_page_title',
106 'node:' . $node_1->id(),
108 'user:' . $author_1->id(),
109 'config:filter.format.basic_html',
110 'config:color.theme.bartik',
111 'config:search.settings',
112 'config:system.menu.account',
113 'config:system.menu.tools',
114 'config:system.menu.footer',
115 'config:system.menu.main',
116 'config:system.site',
117 // FinishResponseSubscriber adds this cache tag to responses that have the
118 // 'user.permissions' cache context for anonymous users.
119 'config:user.role.anonymous',
122 // Render the view block adds the languages cache context.
123 $cache_contexts[] = 'languages:' . LanguageInterface::TYPE_CONTENT;
126 $this->assertPageCacheContextsAndTags($node_2->urlInfo(), $cache_contexts, [
131 'config:block.block.bartik_branding',
132 'config:block.block.bartik_breadcrumbs',
133 'config:block.block.bartik_content',
134 'config:block.block.bartik_tools',
135 'config:block.block.bartik_help',
136 'config:block.block.bartik_search',
137 'config:block.block.' . $block->id(),
138 'config:block.block.bartik_footer',
139 'config:block.block.bartik_powered',
140 'config:block.block.bartik_main_menu',
141 'config:block.block.bartik_account_menu',
142 'config:block.block.bartik_messages',
143 'config:block.block.bartik_local_actions',
144 'config:block.block.bartik_local_tasks',
145 'config:block.block.bartik_page_title',
147 'node:' . $node_2->id(),
148 'user:' . $author_2->id(),
149 'config:color.theme.bartik',
150 'config:filter.format.full_html',
151 'config:search.settings',
152 'config:system.menu.account',
153 'config:system.menu.tools',
154 'config:system.menu.footer',
155 'config:system.menu.main',
156 'config:system.site',
159 'config:views.view.comments_recent',
160 // FinishResponseSubscriber adds this cache tag to responses that have the
161 // 'user.permissions' cache context for anonymous users.
162 'config:user.role.anonymous',