3 namespace Drupal\Tests\views\FunctionalJavascript\Plugin\views\Handler;
5 use Drupal\FunctionalJavascriptTests\WebDriverTestBase;
6 use Drupal\views\Tests\ViewTestData;
9 * Tests the contextual filter handler UI.
13 class ContextualFilterTest extends WebDriverTestBase {
18 public static $modules = ['node', 'views', 'views_ui', 'views_test_config'];
21 * Views used by this test.
25 public static $testViews = ['test_field_body'];
30 protected function setUp() {
33 ViewTestData::createTestViews(get_class($this), ['views_test_config']);
35 // Always show advanced column.
36 \Drupal::configFactory()->getEditable('views.settings')->set('ui.show.advanced_column', TRUE)->save();
38 // Disable automatic live preview to make the sequence of calls clearer. And
39 // prevent errors on saving the view with the preview ajax load that are
41 \Drupal::configFactory()->getEditable('views.settings')->set('ui.always_live_preview', FALSE)->save();
43 $account = $this->drupalCreateUser(['administer views']);
44 $this->drupalLogin($account);
48 * Test adding a contextual filter handler through the UI.
50 public function testAddContextualFilterUI() {
51 $this->drupalGet('/admin/structure/views/view/test_field_body');
53 $web_assert = $this->assertSession();
54 $page = $this->getSession()->getPage();
56 $page->clickLink('views-add-argument');
58 $field = $web_assert->waitForField('name[node_field_data.nid]');
59 $this->assertNotEmpty($field);
62 $add_button = $page->find('css', '.ui-dialog-buttonset .button--primary');
65 $field_action = $web_assert->waitForField('options[default_action]');
66 $this->assertNotEmpty($field_action);
67 $field_action->setValue('default');
69 $page->selectFieldOption('options[default_argument_type]', 'node');
70 $add_button = $page->find('css', '.ui-dialog-buttonset .button--primary');
73 // Wait for the dialog to close.
74 $page->waitFor(10, function () use ($page) {
75 $field = $page->find('css', '.ui-dialog-buttonset .button--primary');
79 $page->pressButton('edit-actions-submit');
81 $page->clickLink('Content: ID');
82 // Check that the dialog opens.
83 $field_action = $web_assert->waitForField('options[default_action]');
84 $this->assertNotEmpty($field_action);