summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--includes/form.inc6
-rw-r--r--modules/search/search.test32
2 files changed, 37 insertions, 1 deletions
diff --git a/includes/form.inc b/includes/form.inc
index 5e911ed63..159653509 100644
--- a/includes/form.inc
+++ b/includes/form.inc
@@ -629,6 +629,12 @@ function drupal_redirect_form($form, $redirect = NULL) {
}
if (!isset($goto) || ($goto !== FALSE)) {
if (isset($goto)) {
+ // Remove any fake destination set by drupal_not_found() or
+ // drupal_access_denied() so that we can properly redirect from those
+ // pages.
+ if (isset($_REQUEST['destination']) && $_REQUEST['destination'] == $_GET['q']) {
+ unset($_REQUEST['destination']);
+ }
if (is_array($goto)) {
call_user_func_array('drupal_goto', $goto);
}
diff --git a/modules/search/search.test b/modules/search/search.test
index 2415abe65..96e036801 100644
--- a/modules/search/search.test
+++ b/modules/search/search.test
@@ -383,8 +383,13 @@ class SearchBlockTestCase extends DrupalWebTestCase {
parent::setUp('search');
// Create and login user
- $admin_user = $this->drupalCreateUser(array('administer blocks'));
+ $admin_user = $this->drupalCreateUser(array('administer blocks', 'search content'));
$this->drupalLogin($admin_user);
+
+ // Disable the theme form to avoid confusion.
+ $settings = theme_get_settings();
+ $settings['toggle_search'] = FALSE;
+ variable_set('theme_settings', $settings);
}
function testSearchFormBlock() {
@@ -398,4 +403,29 @@ class SearchBlockTestCase extends DrupalWebTestCase {
$this->drupalPost('admin/build/block', $edit, t('Save blocks'));
$this->assertText(t('The block settings have been updated.'), t('Block successfully move to footer region.'));
}
+
+ /**
+ * Test that the search block form works correctly.
+ */
+ function testBlock() {
+ // Enable the block, and place it in the 'content' region so that it isn't
+ // hidden on 404 pages.
+ $edit = array('search_form[region]' => 'content');
+ $this->drupalPost('admin/build/block', $edit, t('Save blocks'));
+
+ // Test a normal search via the block form, from the front page.
+ $terms = array('search_block_form' => 'test');
+ $this->drupalPost('node', $terms, t('Search'));
+ $this->assertText('Your search yielded no results');
+
+ // Test a search from the block on a 404 page.
+ $this->drupalPost('foo', $terms, t('Search'));
+ $this->assertText('Your search yielded no results');
+
+ // Test a search from the block when it doesn't appear on the search page.
+ $edit = array('pages' => 'search');
+ $this->drupalPost('admin/build/block/configure/search/form', $edit, t('Save block'));
+ $this->drupalPost('node', $terms, t('Search'));
+ $this->assertText('Your search yielded no results');
+ }
}