Unverified Commit 16d5d428 authored by lauriii's avatar lauriii
Browse files

Issue #3275843 by danflanagan8, smustgrave: Search Tests should not rely on Classy

(cherry picked from commit f40b8e85)
(cherry picked from commit 98df5e4e)
parent 0f3708a1
......@@ -20,7 +20,7 @@ class SearchBlockTest extends BrowserTestBase {
/**
* {@inheritdoc}
*/
protected $defaultTheme = 'classy';
protected $defaultTheme = 'stark';
/**
* The administrative user.
......@@ -53,7 +53,7 @@ public function testSearchFormBlock() {
// Test availability of the search block in the admin "Place blocks" list.
$this->drupalGet('admin/structure/block');
$this->getSession()->getPage()->findLink('Place block')->click();
$this->assertSession()->linkByHrefExists('/admin/structure/block/add/search_form_block/classy', 0,
$this->assertSession()->linkByHrefExists('/admin/structure/block/add/search_form_block/stark', 0,
'Did not find the search block in block candidate list.');
$block = $this->drupalPlaceBlock('search_form_block');
......@@ -104,7 +104,7 @@ public function testSearchFormBlock() {
$this->drupalGet('');
$this->submitForm($terms, 'Search');
$this->assertSession()->statusCodeEquals(200);
$this->assertSession()->pageTextContains('Please enter some keywords');
$this->assertSession()->statusMessageContains('Please enter some keywords', 'error');
// Confirm that the user is redirected to the search page, when form is
// submitted empty.
......@@ -118,17 +118,17 @@ public function testSearchFormBlock() {
// search again with a longer keyword. First test using the block form.
$this->drupalGet('node');
$this->submitForm(['keys' => $this->randomMachineName(1)], 'Search');
$this->assertSession()->pageTextContains('You must include at least one keyword to match in the content');
$this->assertSession()->pageTextNotContains('Please enter some keywords');
$this->assertSession()->statusMessageContains('You must include at least one keyword to match in the content', 'warning');
$this->assertSession()->statusMessageNotContains('Please enter some keywords');
$this->submitForm(['keys' => $this->randomMachineName()], 'Search', 'search-block-form');
$this->assertSession()->pageTextNotContains('You must include at least one keyword to match in the content');
$this->assertSession()->statusMessageNotContains('You must include at least one keyword to match in the content');
// Same test again, using the search page form for the second search this
// time.
$this->drupalGet('node');
$this->submitForm(['keys' => $this->randomMachineName(1)], 'Search');
$this->submitForm(['keys' => $this->randomMachineName()], 'Search', 'search-form');
$this->assertSession()->pageTextNotContains('You must include at least one keyword to match in the content');
$this->assertSession()->statusMessageNotContains('You must include at least one keyword to match in the content');
// Edit the block configuration so that it searches users instead of nodes,
// and test.
......
......@@ -29,7 +29,7 @@ class SearchConfigSettingsFormTest extends BrowserTestBase {
/**
* {@inheritdoc}
*/
protected $defaultTheme = 'classy';
protected $defaultTheme = 'stark';
/**
* User who can search and administer search.
......@@ -77,7 +77,7 @@ protected function setUp(): void {
// Enable the search block.
$this->drupalPlaceBlock('search_form_block');
$this->drupalPlaceBlock('local_tasks_block');
$this->drupalPlaceBlock('local_tasks_block', ['id' => 'local_tasks']);
$this->drupalPlaceBlock('page_title_block');
}
......@@ -96,14 +96,14 @@ public function testSearchSettingsPage() {
$this->assertSession()->pageTextContains('Are you sure you want to re-index the site');
$this->drupalGet('admin/config/search/pages/reindex');
$this->submitForm([], 'Re-index site');
$this->assertSession()->pageTextContains('All search indexes will be rebuilt');
$this->assertSession()->statusMessageContains('All search indexes will be rebuilt', 'status');
$this->drupalGet('admin/config/search/pages');
$this->assertSession()->pageTextContains('There is 1 item left to index.');
// Test that the form saves with the default values.
$this->drupalGet('admin/config/search/pages');
$this->submitForm([], 'Save configuration');
$this->assertSession()->pageTextContains('The configuration options have been saved.');
$this->assertSession()->statusMessageContains('The configuration options have been saved.', 'status');
// Test that the form does not save with an invalid word length.
$edit = [
......@@ -111,7 +111,8 @@ public function testSearchSettingsPage() {
];
$this->drupalGet('admin/config/search/pages');
$this->submitForm($edit, 'Save configuration');
$this->assertSession()->pageTextNotContains('The configuration options have been saved.');
$this->assertSession()->statusMessageNotContains('The configuration options have been saved.');
$this->assertSession()->statusMessageContains('Minimum word length to index must be a number.', 'error');
// Test logging setting. It should be off by default.
$text = $this->randomMachineName(5);
......@@ -149,7 +150,7 @@ public function testSearchModuleSettingsPage() {
$this->submitForm($edit, 'Save search page');
// Ensure that the modifications took effect.
$this->assertSession()->pageTextContains("The Dummy search type search page has been updated.");
$this->assertSession()->statusMessageContains("The Dummy search type search page has been updated.", 'status');
$this->drupalGet('admin/config/search/pages/manage/dummy_search_type');
$this->assertTrue($this->assertSession()->optionExists('edit-extra-type-settings-boost', 'ii')->isSelected());
}
......@@ -197,7 +198,7 @@ public function testSearchModuleDisabling() {
foreach ($plugins as $other) {
if ($other != $entity_id) {
$path = 'search/' . $entities[$other]->getPath();
$this->assertSession()->elementNotExists('xpath', '//ul[@class="tabs primary"]/li/a[@data-drupal-link-system-path="' . $path . '"]');
$this->assertSession()->elementNotExists('xpath', '//div[@id="block-local-tasks"]//li/a[@data-drupal-link-system-path="' . $path . '"]');
}
}
......@@ -238,7 +239,7 @@ public function testSearchModuleDisabling() {
foreach ($plugins as $entity_id) {
$path = 'search/' . $entities[$entity_id]->getPath();
$label = $entities[$entity_id]->label();
$this->assertSession()->elementTextContains('xpath', '//ul[@class="tabs primary"]/li/a[@data-drupal-link-system-path="' . $path . '"]', $label);
$this->assertSession()->elementTextContains('xpath', '//div[@id="block-local-tasks"]//li/a[@data-drupal-link-system-path="' . $path . '"]', $label);
}
}
}
......@@ -248,7 +249,7 @@ public function testSearchModuleDisabling() {
*/
public function testDefaultSearchPageOrdering() {
$this->drupalGet('search');
$elements = $this->xpath('//*[contains(@class, :class)]//a', [':class' => 'tabs primary']);
$elements = $this->xpath('//div[@id="block-local-tasks"]//a');
$this->assertSame(Url::fromRoute('search.view_node_search')->toString(), $elements[0]->getAttribute('href'));
$this->assertSame(Url::fromRoute('search.view_dummy_search_type')->toString(), $elements[1]->getAttribute('href'));
$this->assertSame(Url::fromRoute('search.view_user_search')->toString(), $elements[2]->getAttribute('href'));
......@@ -280,7 +281,7 @@ public function testMultipleSearchPages() {
$first['path'] = strtolower($this->randomMachineName(8));
$this->submitForm($first, 'Save');
$this->assertDefaultSearch($first_id, 'The default page matches the only search page.');
$this->assertSession()->pageTextContains("The {$first['label']} search page has been added.");
$this->assertSession()->statusMessageContains("The {$first['label']} search page has been added.", 'status');
// Attempt to add a search page with an existing path.
$edit = [];
......@@ -291,7 +292,7 @@ public function testMultipleSearchPages() {
$edit['id'] = strtolower($this->randomMachineName(8));
$edit['path'] = $first['path'];
$this->submitForm($edit, 'Save');
$this->assertSession()->pageTextContains('The search page path must be unique.');
$this->assertSession()->statusMessageContains('The search page path must be unique.', 'error');
// Add a second search page.
$second = [];
......@@ -303,7 +304,7 @@ public function testMultipleSearchPages() {
// Ensure both search pages have their tabs displayed.
$this->drupalGet('search');
$elements = $this->xpath('//*[contains(@class, :class)]//a', [':class' => 'tabs primary']);
$elements = $this->xpath('//div[@id="block-local-tasks"]//a');
$this->assertSame(Url::fromRoute('search.view_' . $first_id)->toString(), $elements[0]->getAttribute('href'));
$this->assertSame(Url::fromRoute('search.view_' . $second_id)->toString(), $elements[1]->getAttribute('href'));
......@@ -315,7 +316,7 @@ public function testMultipleSearchPages() {
$this->drupalGet('admin/config/search/pages');
$this->submitForm($edit, 'Save configuration');
$this->drupalGet('search');
$elements = $this->xpath('//*[contains(@class, :class)]//a', [':class' => 'tabs primary']);
$elements = $this->xpath('//div[@id="block-local-tasks"]//a');
$this->assertSame(Url::fromRoute('search.view_' . $second_id)->toString(), $elements[0]->getAttribute('href'));
$this->assertSame(Url::fromRoute('search.view_' . $first_id)->toString(), $elements[1]->getAttribute('href'));
......@@ -326,7 +327,7 @@ public function testMultipleSearchPages() {
// Change the default search page.
$this->clickLink('Set as default');
$this->assertSession()->pageTextContains("The default search page is now {$second['label']}. Be sure to check the ordering of your search pages.");
$this->assertSession()->statusMessageContains("The default search page is now {$second['label']}. Be sure to check the ordering of your search pages.", 'status');
$this->verifySearchPageOperations($first_id, TRUE, TRUE, TRUE, FALSE);
$this->verifySearchPageOperations($second_id, TRUE, FALSE, FALSE, FALSE);
......@@ -347,7 +348,7 @@ public function testMultipleSearchPages() {
$this->clickLink('Delete');
$this->assertSession()->pageTextContains("Are you sure you want to delete the search page {$first['label']}?");
$this->submitForm([], 'Delete');
$this->assertSession()->pageTextContains("The search page {$first['label']} has been deleted.");
$this->assertSession()->statusMessageContains("The search page {$first['label']} has been deleted.", 'status');
$this->verifySearchPageOperations($first_id, FALSE, FALSE, FALSE, FALSE);
}
......
......@@ -73,13 +73,13 @@ public function testPhraseSearchPunctuation() {
$this->drupalGet('search/node');
$this->submitForm($edit, 'Search');
$this->assertSession()->responseNotContains('<strong>&</strong>amp;');
$this->assertSession()->pageTextContains('You must include at least one keyword');
$this->assertSession()->statusMessageContains('You must include at least one keyword', 'warning');
$edit = ['keys' => '&amp;'];
$this->drupalGet('search/node');
$this->submitForm($edit, 'Search');
$this->assertSession()->responseNotContains('<strong>&</strong>amp;');
$this->assertSession()->pageTextContains('You must include at least one keyword');
$this->assertSession()->statusMessageContains('You must include at least one keyword', 'warning');
}
}
......@@ -135,16 +135,16 @@ public function testSearchText() {
$edit['keys'] = implode(' ', $keys);
$this->drupalGet('search/node');
$this->submitForm($edit, 'Search');
$this->assertSession()->pageTextContains("Your search used too many AND/OR expressions. Only the first {$limit} terms were included in this search.");
$this->assertSession()->statusMessageContains("Your search used too many AND/OR expressions. Only the first {$limit} terms were included in this search.", 'warning');
// Test that a search on Node or User with no keywords entered generates
// the "Please enter some keywords" message.
$this->drupalGet('search/node');
$this->submitForm([], 'Search');
$this->assertSession()->pageTextContains('Please enter some keywords');
$this->assertSession()->statusMessageContains('Please enter some keywords', 'error');
$this->drupalGet('search/user');
$this->submitForm([], 'Search');
$this->assertSession()->pageTextContains('Please enter some keywords');
$this->assertSession()->statusMessageContains('Please enter some keywords', 'error');
// Make sure the "Please enter some keywords" message is NOT displayed if
// you use "or" words or phrases in Advanced Search.
......@@ -152,22 +152,22 @@ public function testSearchText() {
$this->submitForm([
'or' => $this->randomMachineName() . ' ' . $this->randomMachineName(),
], 'edit-submit--2');
$this->assertSession()->pageTextNotContains('Please enter some keywords');
$this->assertSession()->statusMessageNotContains('Please enter some keywords');
$this->drupalGet('search/node');
$this->submitForm([
'phrase' => '"' . $this->randomMachineName() . '" "' . $this->randomMachineName() . '"',
], 'edit-submit--2');
$this->assertSession()->pageTextNotContains('Please enter some keywords');
$this->assertSession()->statusMessageNotContains('Please enter some keywords');
// Verify that if you search for a too-short keyword, you get the right
// message, and that if after that you search for a longer keyword, you
// do not still see the message.
$this->drupalGet('search/node');
$this->submitForm(['keys' => $this->randomMachineName(1)], 'Search');
$this->assertSession()->pageTextContains('You must include at least one keyword');
$this->assertSession()->pageTextNotContains('Please enter some keywords');
$this->assertSession()->statusMessageContains('You must include at least one keyword', 'warning');
$this->assertSession()->statusMessageNotContains('Please enter some keywords');
$this->submitForm(['keys' => $this->randomMachineName()], 'Search');
$this->assertSession()->pageTextNotContains('You must include at least one keyword');
$this->assertSession()->statusMessageNotContains('You must include at least one keyword');
// Test that if you search for a URL with .. in it, you still end up at
// the search page. See issue https://www.drupal.org/node/890058.
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment