Version 1
[yaffs-website] / web / core / modules / views_ui / tests / src / FunctionalJavascript / FilterCriteriaTest.php
diff --git a/web/core/modules/views_ui/tests/src/FunctionalJavascript/FilterCriteriaTest.php b/web/core/modules/views_ui/tests/src/FunctionalJavascript/FilterCriteriaTest.php
new file mode 100644 (file)
index 0000000..e48487a
--- /dev/null
@@ -0,0 +1,76 @@
+<?php
+
+namespace Drupal\Tests\views_ui\FunctionalJavascript;
+
+use Drupal\FunctionalJavascriptTests\JavascriptTestBase;
+
+/**
+ * Tests the View UI filter criteria group dialog.
+ *
+ * @group views_ui
+ */
+class FilterCriteriaTest extends JavascriptTestBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public static $modules = ['node', 'views', 'views_ui'];
+
+  /**
+   * {@inheritdoc}
+   */
+  public function setUp() {
+    parent::setUp();
+
+    $admin_user = $this->drupalCreateUser([
+      'administer site configuration',
+      'administer views',
+      'administer nodes',
+      'access content overview',
+    ]);
+
+    // Disable automatic live preview to make the sequence of calls clearer.
+    \Drupal::configFactory()->getEditable('views.settings')->set('ui.always_live_preview', FALSE)->save();
+    $this->drupalLogin($admin_user);
+  }
+
+  /**
+   * Tests dialog for filter criteria.
+   */
+  public function testFilterCriteriaDialog() {
+    $this->drupalGet('admin/structure/views/view/content_recent');
+    $assert_session = $this->assertSession();
+    $page = $this->getSession()->getPage();
+
+    // Use the 'And/Or Rearrange' link for fields to open a dialog.
+    $dropbutton = $page->find('css', '.views-ui-display-tab-bucket.filter .dropbutton-toggle button');
+    $dropbutton->click();
+    $add_link = $page->findById('views-rearrange-filter');
+    $this->assertTrue($add_link->isVisible(), 'And/Or Rearrange button found.');
+    $add_link->click();
+    $assert_session->assertWaitOnAjaxRequest();
+
+    // Add a new filter group.
+    $create_new_filter_group = $page->findById('views-add-group-link');
+    $this->assertTrue($create_new_filter_group->isVisible(), 'Add group link found.');
+    $create_new_filter_group->click();
+    $assert_session->assertWaitOnAjaxRequest();
+
+    // Assert the existence of the new filter group by checking the remove group
+    // link.
+    $remove_link = $page->findLink('Remove group');
+    $this->assertTrue($remove_link->isVisible(), 'New group found.');
+
+    // Remove the group again and assert the group is not present anymore.
+    $remove_link->click();
+    $assert_session->assertWaitOnAjaxRequest();
+    $remove_link = $page->findLink('Remove group');
+    $this->assertEmpty($remove_link, 'Remove button not available');
+
+    // Checks that the admin summary is not double escaped.
+    $this->drupalGet('admin/structure/views/view/who_s_online');
+    $page = $this->getSession()->getPage();
+    $this->assertNotNull($page->findLink('User: Last access (>= -15 minutes)'));
+  }
+
+}