Version 1
[yaffs-website] / web / core / modules / views_ui / tests / src / FunctionalJavascript / FilterOptionsTest.php
diff --git a/web/core/modules/views_ui/tests/src/FunctionalJavascript/FilterOptionsTest.php b/web/core/modules/views_ui/tests/src/FunctionalJavascript/FilterOptionsTest.php
new file mode 100644 (file)
index 0000000..32b1a40
--- /dev/null
@@ -0,0 +1,76 @@
+<?php
+
+namespace Drupal\Tests\views_ui\FunctionalJavascript;
+
+use Drupal\FunctionalJavascriptTests\JavascriptTestBase;
+
+/**
+ * Tests the JavaScript filtering of options in add handler form.
+ *
+ * @group views_ui
+ */
+class FilterOptionsTest extends JavascriptTestBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public static $modules = ['node', 'views', 'views_ui', 'views_ui_test_field'];
+
+  /**
+   * {@inheritdoc}
+   */
+  public function setUp() {
+    parent::setUp();
+
+    $admin_user = $this->drupalCreateUser([
+      'administer views',
+    ]);
+    $this->drupalLogin($admin_user);
+  }
+
+  /**
+   * Tests filtering options in the 'Add fields' dialog.
+   */
+  public function testFilterOptionsAddFields() {
+    $this->drupalGet('admin/structure/views/view/content');
+
+    $session = $this->getSession();
+    $web_assert = $this->assertSession();
+    $page = $session->getPage();
+
+    // Open the dialog.
+    $page->clickLink('views-add-field');
+
+    // Wait for the popup to open and the search field to be available.
+    $options_search = $web_assert->waitForField('override[controls][options_search]');
+
+    // Test that the both special fields are visible.
+    $this->assertTrue($page->findField('name[views.views_test_field_1]')->isVisible());
+    $this->assertTrue($page->findField('name[views.views_test_field_2]')->isVisible());
+
+    // Test the ".title" field in search.
+    $options_search->setValue('FIELD_1_TITLE');
+    $page->waitFor(10, function () use ($page) {
+      return !$page->findField('name[views.views_test_field_2]')->isVisible();
+    });
+    $this->assertTrue($page->findField('name[views.views_test_field_1]')->isVisible());
+    $this->assertFalse($page->findField('name[views.views_test_field_2]')->isVisible());
+
+    // Test the ".description" field in search.
+    $options_search->setValue('FIELD_2_DESCRIPTION');
+    $page->waitFor(10, function () use ($page) {
+      return !$page->findField('name[views.views_test_field_1]')->isVisible();
+    });
+    $this->assertTrue($page->findField('name[views.views_test_field_2]')->isVisible());
+    $this->assertFalse($page->findField('name[views.views_test_field_1]')->isVisible());
+
+    // Test the "label" field not in search.
+    $options_search->setValue('FIELD_1_LABEL');
+    $page->waitFor(10, function () use ($page) {
+      return !$page->findField('name[views.views_test_field_2]')->isVisible();
+    });
+    $this->assertFalse($page->findField('name[views.views_test_field_2]')->isVisible());
+    $this->assertFalse($page->findField('name[views.views_test_field_1]')->isVisible());
+  }
+
+}