1.20.x search.test | SearchConfigSettingsForm::testSearchModuleDisabling() |
Verify that you can disable individual search modules.
File
- modules/
search/ tests/ search.test, line 1423 - Tests for search.module.
Class
- SearchConfigSettingsForm
- Test config page.
Code
function testSearchModuleDisabling() {
// Array of search modules to test: 'path' is the search path, 'title' is
// the tab title, 'keys' are the keywords to search for, and 'text' is
// the text to assert is on the results page.
$module_info = array(
'node' => array(
'path' => 'node',
'title' => 'Content',
'keys' => 'pizza',
'text' => $this->search_node->title,
),
'user' => array(
'path' => 'user',
'title' => 'User',
'keys' => $this->search_user->name,
'text' => $this->search_user->mail,
),
'search_extra_type' => array(
'path' => 'dummy_path',
'title' => 'Dummy search type',
'keys' => 'foo',
'text' => 'Dummy search snippet to display',
),
);
$modules = array_keys($module_info);
// Test each module if it's enabled as the only search module.
foreach ($modules as $module) {
// Enable the one module and disable other ones.
$info = $module_info[$module];
$edit = array();
foreach ($modules as $other) {
$edit['search_active_modules[' . $other . ']'] = (($other == $module) ? $module : FALSE);
}
$edit['search_default_module'] = $module;
$this->backdropPost('admin/config/search/settings', $edit, t('Save configuration'));
// Run a search from the correct search URL.
$this->backdropGet('search/' . $info['path'] . '/' . $info['keys']);
$this->assertNoText('no results', $info['title'] . ' search found results');
$this->assertText($info['text'], 'Correct search text found');
// Verify that other module search tab titles are not visible.
foreach ($modules as $other) {
if ($other != $module) {
$title = $module_info[$other]['title'];
$this->assertNoText($title, $title . ' search tab is not shown');
}
}
// Run a search from the search block on the node page. Verify you get
// to this module's search results page.
$terms = array('search_block_form' => $info['keys']);
$this->backdropPost('user', $terms, t('Search'));
$this->assertEqual(
$this->getURL(),
url('search/' . $info['path'] . '/' . $info['keys'], array('absolute' => TRUE)),
'Block redirected to right search page');
// Try an invalid search path. Should redirect to our active module.
$this->backdropGet('search/not_a_module_path');
$this->assertEqual(
$this->getURL(),
url('search/' . $info['path'], array('absolute' => TRUE)),
'Invalid search path redirected to default search page');
}
// Test with all search modules enabled. When you go to the search
// page or run search, all modules should be shown.
$edit = array();
foreach ($modules as $module) {
$edit['search_active_modules[' . $module . ']'] = $module;
}
$edit['search_default_module'] = 'node';
$this->backdropPost('admin/config/search/settings', $edit, t('Save configuration'));
foreach (array('search/node/pizza', 'search/node') as $path) {
$this->backdropGet($path);
foreach ($modules as $module) {
$title = $module_info[$module]['title'];
$this->assertText($title, format_string('%title search tab is shown', array('%title' => $title)));
}
}
}