Index: modules/search/search.test =================================================================== RCS file: /cvs/drupal/drupal/modules/search/search.test,v retrieving revision 1.58 diff -u -r1.58 search.test --- modules/search/search.test 6 Apr 2010 16:28:25 -0000 1.58 +++ modules/search/search.test 15 Apr 2010 15:36:25 -0000 @@ -412,6 +412,45 @@ $this->assertEqual($set[0]['node']->nid, $nodes[$node_rank][1]->nid, 'Search ranking "' . $node_rank . '" order.'); } } + + /** + * Verifies that if we combine two rankings, search still works. + * + * See issue http://drupal.org/node/771596 + */ + function testDoubleRankings() { + // Login with sufficient privileges. + $this->drupalLogin($this->drupalCreateUser(array('post comments without approval', 'create page content'))); + + // See testRankings() above - build a node that will rank high for sticky. + $settings = array( + 'type' => 'page', + 'title' => array(LANGUAGE_NONE => array(array('value' => '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.'); + } } class SearchBlockTestCase extends DrupalWebTestCase {