You are here

public function ExposedFormUITest::testGroupedFilterAdminUi in Drupal 9

Same name and namespace in other branches
  1. 8 core/modules/views_ui/tests/src/Functional/ExposedFormUITest.php \Drupal\Tests\views_ui\Functional\ExposedFormUITest::testGroupedFilterAdminUi()

Tests the admin interface of exposed grouped filters.

File

core/modules/views_ui/tests/src/Functional/ExposedFormUITest.php, line 181

Class

ExposedFormUITest
Tests exposed forms UI functionality.

Namespace

Drupal\Tests\views_ui\Functional

Code

public function testGroupedFilterAdminUi() {
  $edit = [];
  $this
    ->drupalGet('admin/structure/views/nojs/handler/test_exposed_admin_ui/default/filter/type');

  // Click the Expose filter button.
  $this
    ->drupalGet('admin/structure/views/nojs/handler/test_exposed_admin_ui/default/filter/type');
  $this
    ->submitForm($edit, 'Expose filter');

  // Check the label of the grouped filters button.
  $this
    ->helperButtonHasLabel('edit-options-group-button-button', 'Grouped filters');

  // Click the Grouped Filters button.
  $this
    ->drupalGet('admin/structure/views/nojs/handler/test_exposed_admin_ui/default/filter/type');
  $this
    ->submitForm([], 'Grouped filters');

  // After click on 'Grouped Filters', the standard operator and value should
  // not be displayed.
  $this
    ->assertSession()
    ->fieldNotExists('edit-options-operator-in');
  $this
    ->assertSession()
    ->fieldNotExists('edit-options-operator-not-in');
  $this
    ->assertSession()
    ->fieldNotExists('edit-options-value-page');
  $this
    ->assertSession()
    ->fieldNotExists('edit-options-value-article');

  // Check that after click on 'Grouped Filters', a new button is shown to
  // add more items to the list.
  $this
    ->helperButtonHasLabel('edit-options-group-info-add-group', 'Add another item');

  // Validate a single entry for a grouped filter.
  $this
    ->drupalGet('admin/structure/views/nojs/handler/test_exposed_admin_ui/default/filter/type');
  $edit = [];
  $edit["options[group_info][group_items][1][title]"] = 'Is Article';
  $edit["options[group_info][group_items][1][value][article]"] = 'article';
  $this
    ->submitForm($edit, 'Apply');
  $this
    ->assertSession()
    ->addressEquals('admin/structure/views/view/test_exposed_admin_ui/edit/default');
  $this
    ->assertNoGroupedFilterErrors();

  // Validate multiple entries for grouped filters.
  $this
    ->drupalGet('admin/structure/views/nojs/handler/test_exposed_admin_ui/default/filter/type');
  $edit = [];
  $edit["options[group_info][group_items][1][title]"] = 'Is Article';
  $edit["options[group_info][group_items][1][value][article]"] = 'article';
  $edit["options[group_info][group_items][2][title]"] = 'Is Page';
  $edit["options[group_info][group_items][2][value][page]"] = 'page';
  $edit["options[group_info][group_items][3][title]"] = 'Is Page and Article';
  $edit["options[group_info][group_items][3][value][article]"] = 'article';
  $edit["options[group_info][group_items][3][value][page]"] = 'page';
  $this
    ->submitForm($edit, 'Apply');
  $this
    ->assertSession()
    ->addressEquals('admin/structure/views/view/test_exposed_admin_ui/edit/default');
  $this
    ->assertNoGroupedFilterErrors();

  // Validate an "is empty" filter -- title without value is valid.
  $this
    ->drupalGet('admin/structure/views/nojs/handler/test_exposed_admin_ui/default/filter/body_value');
  $edit = [];
  $edit["options[group_info][group_items][1][title]"] = 'No body';
  $edit["options[group_info][group_items][1][operator]"] = 'empty';
  $this
    ->submitForm($edit, 'Apply');
  $this
    ->assertSession()
    ->addressEquals('admin/structure/views/view/test_exposed_admin_ui/edit/default');
  $this
    ->assertNoGroupedFilterErrors();

  // Ensure the string "0" can be used as a value for numeric filters.
  $this
    ->drupalGet('admin/structure/views/nojs/add-handler/test_exposed_admin_ui/default/filter');
  $this
    ->submitForm([
    'name[node_field_data.nid]' => TRUE,
  ], 'Add and configure filter criteria');
  $this
    ->submitForm([], 'Expose filter');
  $this
    ->submitForm([], 'Grouped filters');
  $edit = [];
  $edit['options[group_info][group_items][1][title]'] = 'Testing zero';
  $edit['options[group_info][group_items][1][operator]'] = '>';
  $edit['options[group_info][group_items][1][value][value]'] = '0';
  $this
    ->submitForm($edit, 'Apply');
  $this
    ->assertSession()
    ->addressEquals('admin/structure/views/view/test_exposed_admin_ui/edit/default');
  $this
    ->assertNoGroupedFilterErrors();

  // Ensure "between" filters validate correctly.
  $this
    ->drupalGet('admin/structure/views/nojs/handler/test_exposed_admin_ui/default/filter/nid');
  $edit['options[group_info][group_items][1][title]'] = 'ID between test';
  $edit['options[group_info][group_items][1][operator]'] = 'between';
  $edit['options[group_info][group_items][1][value][min]'] = '0';
  $edit['options[group_info][group_items][1][value][max]'] = '10';
  $this
    ->submitForm($edit, 'Apply');
  $this
    ->assertSession()
    ->addressEquals('admin/structure/views/view/test_exposed_admin_ui/edit/default');
  $this
    ->assertNoGroupedFilterErrors();
}