You are here

function SearchNodeUpdateAndDeletionTest::testSearchIndexUpdateOnNodeDeletion in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 core/modules/search/src/Tests/SearchNodeUpdateAndDeletionTest.php \Drupal\search\Tests\SearchNodeUpdateAndDeletionTest::testSearchIndexUpdateOnNodeDeletion()

Tests that the search index info is updated when a node is deleted.

File

core/modules/search/src/Tests/SearchNodeUpdateAndDeletionTest.php, line 75
Contains \Drupal\search\Tests\SearchNodeUpdateAndDeletionTest.

Class

SearchNodeUpdateAndDeletionTest
Tests search index is updated properly when nodes are removed or updated.

Namespace

Drupal\search\Tests

Code

function testSearchIndexUpdateOnNodeDeletion() {

  // Create a node.
  $node = $this
    ->drupalCreateNode(array(
    'title' => 'No dragons here',
    'body' => array(
      array(
        'value' => 'Again: No dragons here',
      ),
    ),
    'type' => 'page',
  ));
  $node_search_plugin = $this->container
    ->get('plugin.manager.search')
    ->createInstance('node_search');

  // Update the search index.
  $node_search_plugin
    ->updateIndex();
  search_update_totals();

  // Search the node to verify it appears in search results
  $edit = array(
    'keys' => 'dragons',
  );
  $this
    ->drupalPostForm('search/node', $edit, t('Search'));
  $this
    ->assertText($node
    ->label());

  // Get the node info from the search index tables.
  $search_index_dataset = db_query("SELECT sid FROM {search_index} WHERE type = 'node_search' AND  word = :word", array(
    ':word' => 'dragons',
  ))
    ->fetchField();
  $this
    ->assertNotEqual($search_index_dataset, FALSE, t('Node info found on the search_index'));

  // Delete the node.
  $node
    ->delete();

  // Check if the node info is gone from the search table.
  $search_index_dataset = db_query("SELECT sid FROM {search_index} WHERE type = 'node_search' AND  word = :word", array(
    ':word' => 'dragons',
  ))
    ->fetchField();
  $this
    ->assertFalse($search_index_dataset, t('Node info successfully removed from search_index'));

  // Search again to verify the node doesn't appear anymore.
  $this
    ->drupalPostForm('search/node', $edit, t('Search'));
  $this
    ->assertNoText($node
    ->label());
}