1 search.test SearchConfigSettingsForm::testSearchNodeTypes()

Verify enabling/disabling of certain node types.

File

core/modules/search/tests/search.test, line 1512
Tests for search.module.

Class

SearchConfigSettingsForm
Test config page.

Code

function testSearchNodeTypes() {
  $new_type1 = $this->backdropCreateContentType();
  $new_type2 = $this->backdropCreateContentType();
  $new_type3 = $this->backdropCreateContentType();

  // Create 2 nodes that should both be indexed.
  $node1 = $this->backdropCreateNode(array(
    'title' => 'Rabbits',
    'body' => array(LANGUAGE_NONE => array(array('value' => "The bunny's ears were fuzzy."))),
    'type' => $new_type1->type,
  ));
  $node2 = $this->backdropCreateNode(array(
    'title' => 'Llamas',
    'body' => array(LANGUAGE_NONE => array(array('value' => "Llamas are fuzzy all over."))),
    'type' => $new_type2->type,
  ));

  // Update the search index.
  module_invoke_all('update_index');
  search_update_totals();

  // Disable types 2 and 3.
  $edit['node_types[page]'] = TRUE;
  $edit['node_types[post]'] = TRUE;
  $edit['node_types[' . $new_type1->type . ']'] = TRUE;
  $edit['node_types[' . $new_type2->type . ']'] = FALSE;
  $edit['node_types[' . $new_type3->type . ']'] = FALSE;
  $this->backdropPost('admin/config/search/settings', $edit, t('Save configuration'));

  // Create a node of the third type that should not be indexed at all.
  $node3 = $this->backdropCreateNode(array(
    'title' => 'Fish',
    'body' => array(LANGUAGE_NONE => array(array('value' => "These creatures are scaly but beautiful. Not fuzzy."))),
    'type' => $new_type3->type,
  ));

  // Update the search index.
  module_invoke_all('update_index');
  search_update_totals();

  // Check that the names of the node types are not found on the search page,
  // as they should not be visible in the advanced search.
  $this->backdropGet('search/node/fuzzy');
  $this->assertText($node1->type, 'Enabled first node type found on advanced search form.');
  $this->assertNoText($node2->type, 'Disabled second node type not found on advanced search form.');
  $this->assertNoText($node3->type, 'Disabled third node type not found on advanced search form.');

  // Test searching all 3.
  $this->backdropGet('search/node/fuzzy');
  $this->assertText($node1->title, 'Fuzzy bunny ears found in search. Node type is enabled.');
  $this->assertNoText($node2->title, 'Fuzzy llamas not found in search. Node type is disabled.');
  $this->assertNoText($node3->title, 'Scaly fish not found in search. Node type is disabled.');

  // Check that node 2 is still in the index even after it was disabled.
  $result = db_select('search_index', 'i')
    ->extend('SearchQuery')
    ->searchexpression($node2->title, 'node')
    ->execute();
  $this->assertEqual($result->rowCount(), 1, 'Node correctly still indexed after disabling its type.');

  // Check that node 3 is not in the index, as it was disabled before create.
  $result = db_select('search_index', 'i')
    ->extend('SearchQuery')
    ->searchexpression($node3->title, 'node')
    ->execute();
  $this->assertEqual($result->rowCount(), 0, 'New nodes of disabled type are not added to search index.');
}