You are here

public function Select2BefTests::testListExposedFilters in Select2 Boxes 8

Test list exposed filters.

File

modules/select2_bef/tests/src/FunctionalJavascript/Select2BefTests.php, line 164

Class

Select2BefTests
Class for testing Select2Bef.

Namespace

Drupal\Tests\select2_bef\FunctionalJavascript

Code

public function testListExposedFilters() {
  $page = $this
    ->getSession()
    ->getPage();
  $assert_session = $this
    ->assertSession();

  // Generate fake contents for testing.
  $this
    ->generateDummyTerms('tags', 10);
  $this
    ->generateDummyContent(10);
  $this
    ->drupalGet('admin/structure/views/view/test');

  // Add filter by test list field using the View's UI.
  $this
    ->click('a[id="views-add-filter"]');
  $assert_session
    ->assertWaitOnAjaxRequest();
  $page
    ->fillField('override[controls][options_search]', 'Test');
  $page
    ->checkField('name[node__field_test_list.field_test_list_value]');
  $this
    ->click('button.button--primary');
  $assert_session
    ->waitForElementRemoved('css', '.views-ui-dialog');

  // Make filter exposed.
  $page
    ->checkField('options[expose_button][checkbox][checkbox]');
  $assert_session
    ->assertWaitOnAjaxRequest();
  $this
    ->click('button.button--primary');
  $assert_session
    ->waitForElementRemoved('css', '.views-ui-dialog');
  $this
    ->drupalGet('admin/structure/views/nojs/display/test/default/exposed_form');
  $edit = [
    'exposed_form[type]' => 'bef',
  ];
  $this
    ->submitForm($edit, 'Apply');
  $this
    ->drupalGet('admin/structure/views/nojs/display/test/default/exposed_form_options');
  $this
    ->click('summary[role="button"]');
  $page
    ->selectFieldOption('exposed_form_options[bef][filter][field_test_list_value][configuration][plugin_id]', 'select2boxes');
  $page
    ->pressButton('Apply');
  $page
    ->pressButton('Save');
  $assert_session
    ->pageTextContains('The view Test has been saved.');
  $this
    ->drupalGet('test');
  $select = $assert_session
    ->elementExists('css', '#edit-field-test-list-value');

  // Check if all required html attributes are existing for the entity
  // reference field.
  $assert_session
    ->elementAttributeExists('css', '#edit-field-test-list-value', 'data-jquery-once-autocomplete');
  $assert_session
    ->elementAttributeExists('css', '#edit-field-test-list-value', 'data-select2-autocomplete-list-widget');
  $this
    ->assertTrue($select
    ->hasClass('select2-widget'));
}