View source
<?php
namespace Drupal\Tests\webform\Functional\Element;
class WebformElementAutocompleteTest extends WebformElementBrowserTestBase {
protected static $testWebforms = [
'test_element_autocomplete',
];
public function testAutocomplete() {
global $base_path;
$this
->drupalLogin($this->rootUser);
$this
->drupalGet('/webform/test_element_autocomplete');
$this
->assertRaw('<input autocomplete="off" data-drupal-selector="edit-autocomplete-off" type="email" id="edit-autocomplete-off" name="autocomplete_off" value="" size="60" maxlength="254" class="form-email" />');
$this
->drupalGet('/webform/test_element_autocomplete');
$this
->assertRaw('<input data-drupal-selector="edit-autocomplete-items" class="form-autocomplete form-text webform-autocomplete" data-autocomplete-path="' . $base_path . 'webform/test_element_autocomplete/autocomplete/autocomplete_items" type="text" id="edit-autocomplete-items" name="autocomplete_items" value="" size="60" maxlength="255" />');
$this
->drupalGet('/webform/test_element_autocomplete/autocomplete/autocomplete_items', [
'query' => [
'q' => 'United',
],
]);
$this
->assertRaw('[{"value":"United Arab Emirates","label":"United Arab Emirates"},{"value":"United Kingdom","label":"United Kingdom"},{"value":"United States","label":"United States"}]');
$this
->drupalGet('/webform/test_element_autocomplete/autocomplete/autocomplete_items', [
'query' => [
'q' => 'United States',
],
]);
$this
->assertRaw('[{"value":"United States","label":"United States"}]');
$this
->drupalGet('/webform/test_element_autocomplete/autocomplete/autocomplete_items', [
'query' => [
'q' => 'U',
],
]);
$this
->assertRaw('[{"value":"Anguilla","label":"Anguilla"},{"value":"Antigua \\u0026 Barbuda","label":"Antigua \\u0026 Barbuda"},{"value":"Aruba","label":"Aruba"},{"value":"Australia","label":"Australia"},{"value":"Austria","label":"Austria"}]');
$this
->drupalGet('/webform/test_element_autocomplete');
$this
->assertNoRaw('<input data-drupal-selector="edit-autocomplete-existing" class="form-autocomplete form-text" data-autocomplete-path="' . $base_path . 'webform/test_element_autocomplete/autocomplete/autocomplete_existing" type="text" id="edit-autocomplete-existing" name="autocomplete_existing" value="" size="60" maxlength="255" />');
$this
->assertRaw('<input data-drupal-selector="edit-autocomplete-existing" type="text" id="edit-autocomplete-existing" name="autocomplete_existing" value="" size="60" maxlength="255" class="form-text webform-autocomplete" />');
$this
->drupalGet('/webform/test_element_autocomplete/autocomplete/autocomplete_existing', [
'query' => [
'q' => 'abc',
],
]);
$this
->assertRaw('[]');
$this
->drupalPostForm('/webform/test_element_autocomplete', [
'autocomplete_existing' => 'abcdefg',
], 'Submit');
$this
->drupalGet('/webform/test_element_autocomplete');
$this
->assertRaw('<input data-drupal-selector="edit-autocomplete-existing" class="form-autocomplete form-text webform-autocomplete" data-autocomplete-path="' . $base_path . 'webform/test_element_autocomplete/autocomplete/autocomplete_existing" type="text" id="edit-autocomplete-existing" name="autocomplete_existing" value="" size="60" maxlength="255" />');
$this
->assertNoRaw('<input data-drupal-selector="edit-autocomplete-existing" type="text" id="edit-autocomplete-existing" name="autocomplete_existing" value="" size="60" maxlength="255" class="form-text webform-autocomplete" />');
$this
->drupalGet('/webform/test_element_autocomplete/autocomplete/autocomplete_existing', [
'query' => [
'q' => 'abc',
],
]);
$this
->assertNoRaw('[]');
$this
->assertRaw('[{"value":"abcdefg","label":"abcdefg"}]');
$this
->drupalGet('/webform/test_element_autocomplete/autocomplete/autocomplete_existing', [
'query' => [
'q' => 'ab',
],
]);
$this
->assertRaw('[]');
$this
->assertNoRaw('[{"value":"abcdefg","label":"abcdefg"}]');
$this
->drupalPostForm('/webform/test_element_autocomplete', [
'autocomplete_both' => 'Existing Item',
], 'Submit');
$this
->drupalGet('/webform/test_element_autocomplete/autocomplete/autocomplete_both', [
'query' => [
'q' => 'Item',
],
]);
$this
->assertNoRaw('[]');
$this
->assertRaw('[{"value":"Example Item","label":"Example Item"},{"value":"Existing Item","label":"Existing Item"}]');
}
}