public function Select2BefTests::testFilterForTagFields in Select2 Boxes 8
Test filter for tag fields.
File
- modules/
select2_bef/ tests/ src/ FunctionalJavascript/ Select2BefTests.php, line 70
Class
- Select2BefTests
- Class for testing Select2Bef.
Namespace
Drupal\Tests\select2_bef\FunctionalJavascriptCode
public function testFilterForTagFields() {
$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 field "Tags" using the View's UI.
$this
->click('a[id="views-add-filter"]');
$assert_session
->assertWaitOnAjaxRequest();
$page
->fillField('override[controls][options_search]', 'tags');
$page
->checkField('name[node__field_tags.field_tags_target_id]');
$assert_session
->pageTextContains('Selected: Tags (field_tags)');
$this
->click('button.button--primary');
$assert_session
->assertWaitOnAjaxRequest();
// Set dropdown as a filter widget.
$page
->fillField('options[type]', 'select');
$this
->click('button.button--primary');
$assert_session
->assertWaitOnAjaxRequest();
$assert_session
->pageTextContains('Configure filter criterion: Content: Tags (field_tags)');
// 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');
// Save the view.
$page
->pressButton('Save');
$assert_session
->pageTextContains('The view Test has been saved.');
$assert_session
->pageTextContains('Content: Tags (exposed)');
$this
->drupalGet('admin/structure/views/nojs/display/test/page_1/exposed_form');
$edit = [
'exposed_form[type]' => 'bef',
];
$this
->submitForm($edit, 'Apply');
$this
->drupalGet('admin/structure/views/nojs/display/test/page_1/exposed_form_options');
$this
->click('summary[role="button"]');
$assert_session
->assertWaitOnAjaxRequest();
$page
->selectFieldOption('exposed_form_options[bef][filter][field_tags_target_id][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-tags-target-id');
// Check if all required html attributes are existing on the entity
// reference field.
$assert_session
->elementAttributeExists('css', '#edit-field-tags-target-id', 'data-jquery-once-autocomplete');
$assert_session
->elementAttributeExists('css', '#edit-field-tags-target-id', 'data-select2-autocomplete-list-widget');
$this
->assertTrue($select
->hasClass('select2-widget'));
// Update widget to use multiple Select2 widget.
$this
->drupalGet('admin/structure/views/view/test');
$this
->clickLink('Content: Tags (exposed)');
$assert_session
->assertWaitOnAjaxRequest();
$page
->checkField('options[expose][multiple]');
$this
->click('button.button--primary');
$assert_session
->waitForElementRemoved('css', '.views-ui-dialog');
$this
->drupalGet('admin/structure/views/nojs/display/test/page_1/exposed_form_options');
$page
->selectFieldOption('exposed_form_options[bef][filter][field_tags_target_id][configuration][plugin_id]', 'select2boxes');
$page
->pressButton('Apply');
$page
->pressButton('Save');
$assert_session
->pageTextContains('The view Test has been saved.');
$this
->drupalGet('test');
// Trigger the opening dropdown via click on the search input field.
$this
->click('input[class="select2-search__field"]');
$assert_session
->assertWaitOnAjaxRequest();
$select = $assert_session
->elementExists('css', '#edit-field-tags-target-id');
// Check if all required html attributes are existing for the entity
// reference field.
$assert_session
->elementAttributeExists('css', '#edit-field-tags-target-id', 'data-jquery-once-autocomplete');
$assert_session
->elementAttributeExists('css', '#edit-field-tags-target-id', 'data-select2-autocomplete-list-widget');
$assert_session
->elementAttributeExists('css', '#edit-field-tags-target-id', 'data-select2-multiple');
$this
->assertTrue($select
->hasClass('select2-widget'));
}