function SearchPageCacheTagsTest::testSearchTagsBubbling
Same name in other branches
- 9 core/modules/search/tests/src/Functional/SearchPageCacheTagsTest.php \Drupal\Tests\search\Functional\SearchPageCacheTagsTest::testSearchTagsBubbling()
- 8.9.x core/modules/search/tests/src/Functional/SearchPageCacheTagsTest.php \Drupal\Tests\search\Functional\SearchPageCacheTagsTest::testSearchTagsBubbling()
- 10 core/modules/search/tests/src/Functional/SearchPageCacheTagsTest.php \Drupal\Tests\search\Functional\SearchPageCacheTagsTest::testSearchTagsBubbling()
Tests the presence of expected cache tags with referenced entities.
File
-
core/
modules/ search/ tests/ src/ Functional/ SearchPageCacheTagsTest.php, line 140
Class
- SearchPageCacheTagsTest
- Tests the search_page entity cache tags on the search results pages.
Namespace
Drupal\Tests\search\FunctionalCode
public function testSearchTagsBubbling() : void {
// Install field UI module.
$this->container
->get('module_installer')
->install([
'field_ui',
]);
$this->resetAll();
// Creates a new content type that will have an entity reference.
$type_name = 'entity_reference_test';
$type = $this->drupalCreateContentType([
'name' => $type_name,
'type' => $type_name,
]);
$bundle_path = 'admin/structure/types/manage/' . $type->id();
// Create test user.
$admin_user = $this->drupalCreateUser([
'access content',
'create ' . $type_name . ' content',
'administer node fields',
'administer node display',
]);
$this->drupalLogin($admin_user);
$this->fieldUIAddNewField($bundle_path, 'test__ref', 'Test label', 'entity_reference', [], [
'settings[handler_settings][target_bundles][page]' => TRUE,
]);
// Create a new node of our newly created node type and fill in the entity
// reference field.
$edit = [
'title[0][value]' => 'Llama shop',
'field_test__ref[0][target_id]' => $this->node
->getTitle(),
];
$this->drupalGet('node/add/' . $type->id());
$this->submitForm($edit, 'Save');
// Test that the value of the entity reference field is shown.
$this->drupalGet('node/2');
$this->assertSession()
->pageTextContains('bike shed shop');
// Refresh the search index.
$this->container
->get('plugin.manager.search')
->createInstance('node_search')
->updateIndex();
// Log in with searching user again.
$this->drupalLogin($this->searchingUser);
// Default search cache tags.
$default_search_tags = [
'config:search.page.node_search',
'search_index',
'search_index:node_search',
'http_response',
'CACHE_MISS_IF_UNCACHEABLE_HTTP_METHOD:form',
'rendered',
'node_list',
];
// Node search results for shop, should return node:1 (bike shed shop) and
// node:2 (Llama shop). The related authors cache tags should be visible as
// well.
$edit = [];
$edit['keys'] = 'shop';
$this->drupalGet('search/node');
$this->submitForm($edit, 'Search');
$this->assertSession()
->pageTextContains('bike shed shop');
$this->assertSession()
->pageTextContains('Llama shop');
$expected_cache_tags = Cache::mergeTags($default_search_tags, [
'node:1',
'user:2',
'node:2',
'user:3',
'node_view',
'config:filter.format.plain_text',
]);
$this->assertCacheTags($expected_cache_tags);
// Only get the new node in the search results, should result in node:1,
// node:2 and user:3 as cache tags even though only node:1 is shown. This is
// because node:2 is reference in node:1 as an entity reference.
$edit = [];
$edit['keys'] = 'Llama';
$this->drupalGet('search/node');
$this->submitForm($edit, 'Search');
$this->assertSession()
->pageTextContains('Llama shop');
$expected_cache_tags = Cache::mergeTags($default_search_tags, [
'node:1',
'node:2',
'user:3',
'node_view',
]);
$this->assertCacheTags($expected_cache_tags);
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.