function SearchRankingTestCase::testDoubleRankings

Verifies that if we combine two rankings, search still works.

See issue http://drupal.org/node/771596

File

modules/search/search.test, line 557

Class

SearchRankingTestCase
Indexes content and tests ranking factors.

Code

function testDoubleRankings() {
  // Login with sufficient privileges.
  $this->drupalLogin($this->drupalCreateUser(array(
    'skip comment approval',
    'create page content',
  )));
  // See testRankings() above - build a node that will rank high for sticky.
  $settings = array(
    'type' => 'page',
    'title' => 'Drupal rocks',
    'body' => array(
      LANGUAGE_NONE => array(
        array(
          'value' => "Drupal's search rocks",
        ),
      ),
    ),
    'sticky' => 1,
  );
  $node = $this->drupalCreateNode($settings);
  // Update the search index.
  module_invoke_all('update_index');
  search_update_totals();
  // Refresh variables after the treatment.
  $this->refreshVariables();
  // Set up for ranking sticky and lots of comments; make sure others are
  // disabled.
  $node_ranks = array(
    'sticky',
    'promote',
    'relevance',
    'recent',
    'comments',
    'views',
  );
  foreach ($node_ranks as $var) {
    $value = $var == 'sticky' || $var == 'comments' ? 10 : 0;
    variable_set('node_rank_' . $var, $value);
  }
  // Do the search and assert the results.
  $set = node_search_execute('rocks');
  $this->assertEqual($set[0]['node']->nid, $node->nid, 'Search double ranking order.');
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.