protected function IntegrationTest::checkLiveResultsAutocomplete in Search API Autocomplete 8
Tests autocomplete with the "Live results" suggester.
1 call to IntegrationTest::checkLiveResultsAutocomplete()
- IntegrationTest::testModule in tests/
src/ FunctionalJavascript/ IntegrationTest.php - Tests the complete functionality of the module via the UI.
File
- tests/
src/ FunctionalJavascript/ IntegrationTest.php, line 292
Class
- IntegrationTest
- Tests the functionality of the whole module from a user's perspective.
Namespace
Drupal\Tests\search_api_autocomplete\FunctionalJavascriptCode
protected function checkLiveResultsAutocomplete() {
$assert_session = $this
->assertSession();
// First, enable "Live results" as the only suggester.
$this
->drupalGet($this
->getAdminPath('edit'));
$page = $this
->getSession()
->getPage();
$this
->click('input[name="suggesters[enabled][live_results]"]');
$page
->find('css', 'details[data-drupal-selector="edit-suggesters-settings-live-results"] > summary')
->click();
$edit = [
'suggesters[enabled][live_results]' => TRUE,
'suggesters[enabled][search_api_autocomplete_test]' => FALSE,
'suggesters[enabled][server]' => FALSE,
'suggesters[settings][live_results][fields][name]' => FALSE,
'suggesters[settings][live_results][fields][body]' => TRUE,
];
$this
->submitForm($edit, 'Save');
$assert_session
->pageTextContains('The autocompletion settings for the search have been saved.');
// Then, set an appropriate search method for the test backend.
$callback = [
TestsHelper::class,
'search',
];
$this
->setMethodOverride('backend', 'search', $callback);
// Get the autocompletion results.
$this
->drupalGet('search-api-autocomplete-test');
$suggestions = [];
foreach ($this
->getAutocompleteSuggestions() as $element) {
$label = $this
->getElementText($element, '.autocomplete-suggestion-label');
$suggestions[$label] = $element;
}
// Make sure the suggestions are as expected.
$expected = [
$this->entities[3]
->label(),
$this->entities[4]
->label(),
$this->entities[2]
->label(),
];
$this
->assertEquals($expected, array_keys($suggestions));
// Make sure all the search query settings were as expected.
/** @var \Drupal\search_api\Query\QueryInterface $query */
$query = $this
->getMethodArguments('backend', 'search')[0];
$this
->assertInstanceOf(QueryInterface::class, $query);
$this
->assertEquals(0, $query
->getOption('offset'));
$this
->assertEquals(5, $query
->getOption('limit'));
$this
->assertEquals([
'body',
], $query
->getFulltextFields());
$this
->assertEquals('Tést', $query
->getOriginalKeys());
// Click on one of the suggestions and verify it takes us to the expected
// page.
$suggestions[$this->entities[3]
->label()]
->click();
$this
->logPageChange();
$path = $this->entities[3]
->toUrl()
->getInternalPath();
$assert_session
->addressEquals('/' . $path);
}