summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--modules/search/search.test69
1 files changed, 69 insertions, 0 deletions
diff --git a/modules/search/search.test b/modules/search/search.test
index 45ff94c8a..8535b6531 100644
--- a/modules/search/search.test
+++ b/modules/search/search.test
@@ -196,6 +196,75 @@ class SearchBikeShed extends DrupalWebTestCase {
}
}
+class SearchAdvancedSearchForm extends DrupalWebTestCase {
+ protected $node;
+
+ /**
+ * Implementation of getInfo().
+ */
+ function getInfo() {
+ return array(
+ 'name' => t('Advanced search form'),
+ 'description' => t('Indexes content and tests the advanced search form.'),
+ 'group' => t('Search'),
+ );
+ }
+
+ /**
+ * Implementation of setUp().
+ */
+ function setUp() {
+ parent::setUp('search');
+ // Create and login user.
+ $test_user = $this->drupalCreateUser(array('access content', 'search content', 'use advanced search', 'administer nodes'));
+ $this->drupalLogin($test_user);
+
+ // Create initial node.
+ $node = $this->drupalCreateNode();
+ $this->node = $this->drupalCreateNode();
+
+ // First update the index. This does the initial processing.
+ node_update_index();
+
+ // Then, run the shutdown function. Testing is a unique case where indexing
+ // and searching has to happen in the same request, so running the shutdown
+ // function manually is needed to finish the indexing process.
+ search_update_totals();
+ }
+
+ /**
+ * Test using the search form with GET and POST queries.
+ * Test using the advanced search form to limit search to pages.
+ */
+ function testNodeType() {
+ $this->assertTrue($this->node->type == 'page', t('Node type is page.'));
+
+ // Assert that the dummy title doesn't equal the real title.
+ $dummy_title = 'Lorem ipsum';
+ $this->assertNotEqual($dummy_title, $this->node->title, t("Dummy title doens't equal node title"));
+
+ // Search for the dummy title with a GET query.
+ $this->drupalGet('search/node/' . drupal_urlencode($dummy_title));
+ $this->assertNoText($this->node->title, t('Page node is not found with dummy title.'));
+
+ // Search for the title of the node with a GET query.
+ $this->drupalGet('search/node/' . drupal_urlencode($this->node->title));
+ $this->assertText($this->node->title, t('Page node is found with GET query.'));
+
+ // Search for the title of the node with a POST query.
+ $edit = array('or' => $this->node->title);
+ $this->drupalPost('search/node', $edit, t('Advanced search'));
+ $this->assertText($this->node->title, t('Page node is found with POST query.'));
+
+ // Advanced search type option.
+ $this->drupalPost('search/node', array_merge($edit, array('type[page]' => 'page')), t('Advanced search'));
+ $this->assertText($this->node->title, t('Page node is found with POST query and type:page.'));
+
+ $this->drupalPost('search/node', array_merge($edit, array('type[article]' => 'article')), t('Advanced search'));
+ $this->assertText('bike shed', t('Article node is not found with POST query and type:article.'));
+ }
+}
+
class SearchRankingTestCase extends DrupalWebTestCase {
/**
* Implementation of getInfo().