? advanced-search-test.patch
? advsearchform.patch.1
? d7search.kpf
? sites/all/modules
? sites/default/files
? sites/default/settings.php
Index: modules/search/search.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/search/search.test,v
retrieving revision 1.7
diff -u -p -r1.7 search.test
--- modules/search/search.test	6 Sep 2008 08:36:20 -0000	1.7
+++ modules/search/search.test	16 Sep 2008 11:51:59 -0000
@@ -196,6 +196,75 @@ class SearchBikeShed extends DrupalWebTe
   }
 }
 
+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 = $node;
+    
+    // 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().
