View source
<?php
namespace Drupal\Tests\google_appliance\Functional;
use Drupal\google_appliance\Routing\SearchViewRoute;
use Drupal\Core\Url;
class SearchResultsTest extends GoogleApplianceFunctionalTestBase {
protected static $modules = [
'google_appliance_test',
];
public function testSearchResults() {
$assert = $this
->assertSession();
$this
->drupalGet('gsearch/ponies');
$assert
->statusCodeEquals(200);
$assert
->pageTextNotContains('No Results');
$page = $this
->getSession()
->getPage();
$results = $page
->findAll('css', 'li.search-result');
$this
->assertNotEmpty($results);
$this
->assertTrue(count($results) <= 20);
$config = $this->container
->get('config.factory')
->getEditable('google_appliance.settings');
$config
->set('display_settings.results_per_page', 1)
->set('display_settings.search_title', 'Here are the results')
->save();
$this
->drupalGet('gsearch/ponies');
$results = $page
->findAll('css', 'li.search-result');
$this
->assertNotEmpty($results);
$this
->assertCount(1, $results);
$title = $page
->find('css', 'h2:contains("Here are the results")');
$this
->assertNotEmpty($title);
}
public function testPagerHeaderAndSorting() {
$this
->drupalGet('gsearch/ponies');
$assert = $this
->assertSession();
$assert
->statusCodeEquals(200);
$assert
->pageTextNotContains('No Results');
$expectation = 'Showing results 1 - 20 for <em class="placeholder">ponies</em>';
$assert
->responseContains($expectation);
$assert
->pageTextContains('Relevance');
$assert
->linkNotExists('Relevance');
$assert
->linkExists('Date');
$page = $this
->getSession()
->getPage();
$pager = $page
->find('css', 'ul.pager__items');
$this
->assertNotEmpty($pager);
$active = $page
->find('css', 'li.pager__item.is-active:contains("1")');
$this
->assertNotEmpty($active);
$pageTwoLink = $page
->find('css', 'li.pager__item a:contains("2")');
$pageTwoLink
->click();
$assert
->pageTextNotContains('No Results');
$pager = $page
->find('css', 'ul.pager__items');
$this
->assertNotEmpty($pager);
$active = $page
->find('css', 'li.pager__item.is-active:contains("2")');
$this
->assertNotEmpty($active);
$this
->clickLink('Date');
$assert
->pageTextNotContains('No Results');
$this
->assertEquals(Url::fromRoute(SearchViewRoute::ROUTE_NAME, [
'search_query' => 'ponies',
'result_sort' => 'date',
])
->setAbsolute()
->setOption('query', [
'page' => 1,
])
->toString(), $this
->getSession()
->getCurrentUrl());
$assert
->linkNotExists('Date');
$this
->clickLink('Relevance', 1);
$assert
->pageTextNotContains('No Results');
$assert
->linkNotExists('Relevance');
$this
->assertEquals(Url::fromRoute(SearchViewRoute::ROUTE_NAME, [
'search_query' => 'ponies',
'result_sort' => 'rel',
])
->setAbsolute()
->setOption('query', [
'page' => 1,
])
->toString(), $this
->getSession()
->getCurrentUrl());
}
public function testSynonyms() {
$this
->drupalGet('gsearch/ponies');
$assert = $this
->assertSession();
$assert
->statusCodeEquals(200);
$assert
->pageTextNotContains('No Results');
$assert
->pageTextNotContains('You may also try:');
$this
->drupalGet('gsearch/unicorns');
$assert
->statusCodeEquals(200);
$assert
->pageTextContains('You may also try:');
$assert
->linkExists('Donkeys');
$assert
->linkByHrefExists(Url::fromRoute(SearchViewRoute::ROUTE_NAME, [
'search_query' => 'donkeys',
])
->toString());
}
}