View source
<?php
namespace Drupal\Tests\select2_bef\FunctionalJavascript;
use Drupal\Tests\select2boxes\FunctionalJavascript\Select2BoxesTestsBase;
class Select2BefTests extends Select2BoxesTestsBase {
public static $modules = [
'select2boxes',
'select2boxes_test',
'select2_bef',
'better_exposed_filters',
'jquery_ui',
'jquery_ui_datepicker',
'jquery_ui_slider',
'jquery_ui_touch_punch',
'node',
'field',
'views',
'views_ui',
'user',
];
protected $strictConfigSchema = FALSE;
protected function setUp() {
parent::setUp();
$select2befTestUser = $this
->createUser([
'create select2boxes_test_content_type content',
'edit own select2boxes_test_content_type content',
'administer node form display',
'administer site configuration',
'administer node fields',
'administer views',
]);
$this
->drupalLogin($select2befTestUser);
$this
->drupalLogin($this->rootUser);
}
public function testFilterForTagFields() {
$page = $this
->getSession()
->getPage();
$assert_session = $this
->assertSession();
$this
->generateDummyTerms('tags', 10);
$this
->generateDummyContent(10);
$this
->drupalGet('admin/structure/views/view/test');
$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();
$page
->fillField('options[type]', 'select');
$this
->click('button.button--primary');
$assert_session
->assertWaitOnAjaxRequest();
$assert_session
->pageTextContains('Configure filter criterion: Content: Tags (field_tags)');
$page
->checkField('options[expose_button][checkbox][checkbox]');
$assert_session
->assertWaitOnAjaxRequest();
$this
->click('button.button--primary');
$assert_session
->waitForElementRemoved('css', '.views-ui-dialog');
$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');
$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'));
$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');
$this
->click('input[class="select2-search__field"]');
$assert_session
->assertWaitOnAjaxRequest();
$select = $assert_session
->elementExists('css', '#edit-field-tags-target-id');
$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'));
}
public function testListExposedFilters() {
$page = $this
->getSession()
->getPage();
$assert_session = $this
->assertSession();
$this
->generateDummyTerms('tags', 10);
$this
->generateDummyContent(10);
$this
->drupalGet('admin/structure/views/view/test');
$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');
$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');
$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'));
}
}