Mercurial > hg > isophonics-drupal-site
comparison core/modules/search/src/Tests/SearchNodeUpdateAndDeletionTest.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:4c8ae668cc8c |
---|---|
1 <?php | |
2 | |
3 namespace Drupal\search\Tests; | |
4 | |
5 /** | |
6 * Tests search index is updated properly when nodes are removed or updated. | |
7 * | |
8 * @group search | |
9 */ | |
10 class SearchNodeUpdateAndDeletionTest extends SearchTestBase { | |
11 | |
12 /** | |
13 * Modules to enable. | |
14 * | |
15 * @var array | |
16 */ | |
17 public static $modules = []; | |
18 | |
19 /** | |
20 * A user with permission to access and search content. | |
21 * | |
22 * @var \Drupal\user\UserInterface | |
23 */ | |
24 public $testUser; | |
25 | |
26 protected function setUp() { | |
27 parent::setUp(); | |
28 | |
29 // Create a test user and log in. | |
30 $this->testUser = $this->drupalCreateUser(['access content', 'search content']); | |
31 $this->drupalLogin($this->testUser); | |
32 } | |
33 | |
34 /** | |
35 * Tests that the search index info is properly updated when a node changes. | |
36 */ | |
37 public function testSearchIndexUpdateOnNodeChange() { | |
38 // Create a node. | |
39 $node = $this->drupalCreateNode([ | |
40 'title' => 'Someone who says Ni!', | |
41 'body' => [['value' => "We are the knights who say Ni!"]], | |
42 'type' => 'page', | |
43 ]); | |
44 | |
45 $node_search_plugin = $this->container->get('plugin.manager.search')->createInstance('node_search'); | |
46 // Update the search index. | |
47 $node_search_plugin->updateIndex(); | |
48 search_update_totals(); | |
49 | |
50 // Search the node to verify it appears in search results | |
51 $edit = ['keys' => 'knights']; | |
52 $this->drupalPostForm('search/node', $edit, t('Search')); | |
53 $this->assertText($node->label()); | |
54 | |
55 // Update the node | |
56 $node->body->value = "We want a shrubbery!"; | |
57 $node->save(); | |
58 | |
59 // Run indexer again | |
60 $node_search_plugin->updateIndex(); | |
61 search_update_totals(); | |
62 | |
63 // Search again to verify the new text appears in test results. | |
64 $edit = ['keys' => 'shrubbery']; | |
65 $this->drupalPostForm('search/node', $edit, t('Search')); | |
66 $this->assertText($node->label()); | |
67 } | |
68 | |
69 /** | |
70 * Tests that the search index info is updated when a node is deleted. | |
71 */ | |
72 public function testSearchIndexUpdateOnNodeDeletion() { | |
73 // Create a node. | |
74 $node = $this->drupalCreateNode([ | |
75 'title' => 'No dragons here', | |
76 'body' => [['value' => 'Again: No dragons here']], | |
77 'type' => 'page', | |
78 ]); | |
79 | |
80 $node_search_plugin = $this->container->get('plugin.manager.search')->createInstance('node_search'); | |
81 // Update the search index. | |
82 $node_search_plugin->updateIndex(); | |
83 search_update_totals(); | |
84 | |
85 // Search the node to verify it appears in search results | |
86 $edit = ['keys' => 'dragons']; | |
87 $this->drupalPostForm('search/node', $edit, t('Search')); | |
88 $this->assertText($node->label()); | |
89 | |
90 // Get the node info from the search index tables. | |
91 $search_index_dataset = db_query("SELECT sid FROM {search_index} WHERE type = 'node_search' AND word = :word", [':word' => 'dragons']) | |
92 ->fetchField(); | |
93 $this->assertNotEqual($search_index_dataset, FALSE, t('Node info found on the search_index')); | |
94 | |
95 // Delete the node. | |
96 $node->delete(); | |
97 | |
98 // Check if the node info is gone from the search table. | |
99 $search_index_dataset = db_query("SELECT sid FROM {search_index} WHERE type = 'node_search' AND word = :word", [':word' => 'dragons']) | |
100 ->fetchField(); | |
101 $this->assertFalse($search_index_dataset, t('Node info successfully removed from search_index')); | |
102 | |
103 // Search again to verify the node doesn't appear anymore. | |
104 $this->drupalPostForm('search/node', $edit, t('Search')); | |
105 $this->assertNoText($node->label()); | |
106 } | |
107 | |
108 } |