03325ce05c0bb4d93fa8f93071d2d07dabfd90a6
[yaffs-website] / web / core / modules / views_ui / tests / src / FunctionalJavascript / ViewsListingTest.php
1 <?php
2
3 namespace Drupal\Tests\views_ui\FunctionalJavascript;
4
5 use Drupal\FunctionalJavascriptTests\JavascriptTestBase;
6
7 /**
8  * Tests the JavaScript filtering on the Views listing page.
9  *
10  * @see core/modules/views_ui/js/views_ui.listing.js
11  * @group views_ui
12  */
13 class ViewsListingTest extends JavascriptTestBase {
14
15   /**
16    * {@inheritdoc}
17    */
18   public static $modules = ['node', 'views', 'views_ui'];
19
20   /**
21    * {@inheritdoc}
22    */
23   protected function setUp() {
24     parent::setUp();
25
26     $admin_user = $this->drupalCreateUser([
27       'administer site configuration',
28       'administer views',
29     ]);
30     $this->drupalLogin($admin_user);
31   }
32
33   /**
34    * Tests the filtering on the Views listing page.
35    */
36   public function testFilterViewsListing() {
37     $enabled_views_count = 6;
38     $disabled_views_count = 2;
39     $content_views_count = 3;
40
41     $this->drupalGet('admin/structure/views');
42
43     $session = $this->assertSession();
44
45     $page = $this->getSession()->getPage();
46
47     // Test that we search in both the enabled and disabled rows.
48     $enabled_rows = $page->findAll('css', 'tr.views-ui-list-enabled');
49     $enabled_rows = $this->filterVisibleElements($enabled_rows);
50     $disabled_rows = $page->findAll('css', 'tr.views-ui-list-disabled');
51     $disabled_rows = $this->filterVisibleElements($disabled_rows);
52
53     // Test that we see some rows of views in both tables.
54     $this->assertCount($enabled_views_count, $enabled_rows);
55     $this->assertCount($disabled_views_count, $disabled_rows);
56
57     // Filter on the string 'people'. This should only show the people view.
58     $search_input = $page->find('css', '.views-filter-text.form-search');
59     $search_input->setValue('people');
60
61     $enabled_rows = $page->findAll('css', 'tr.views-ui-list-enabled');
62     $enabled_rows = $this->filterVisibleElements($enabled_rows);
63     $disabled_rows = $page->findAll('css', 'tr.views-ui-list-disabled');
64     $disabled_rows = $this->filterVisibleElements($disabled_rows);
65
66     $this->assertCount(1, $enabled_rows);
67     $this->assertCount(0, $disabled_rows);
68
69     // Filter on a string that also appears in the description.
70     $search_input->setValue('content');
71
72     $enabled_rows = $page->findAll('css', 'tr.views-ui-list-enabled');
73     $enabled_rows = $this->filterVisibleElements($enabled_rows);
74     $disabled_rows = $page->findAll('css', 'tr.views-ui-list-disabled');
75     $disabled_rows = $this->filterVisibleElements($disabled_rows);
76
77     $this->assertCount($content_views_count, $enabled_rows);
78     $this->assertCount($disabled_views_count, $disabled_rows);
79
80     // Reset the search string and check that we are back to the initial stage.
81     $search_input->setValue('');
82     // Add a backspace to trigger the keyUp event.
83     $search_input->keyUp(8);
84
85     $enabled_rows = $page->findAll('css', 'tr.views-ui-list-enabled');
86     $enabled_rows = $this->filterVisibleElements($enabled_rows);
87     $disabled_rows = $page->findAll('css', 'tr.views-ui-list-disabled');
88     $disabled_rows = $this->filterVisibleElements($disabled_rows);
89
90     $this->assertCount($enabled_views_count, $enabled_rows);
91     $this->assertCount($disabled_views_count, $disabled_rows);
92
93     // Disable a View and see if it moves to the disabled listing.
94     $enabled_view = $page->find('css', 'tr.views-ui-list-enabled');
95     // Open the dropdown with additional actions.
96     $enabled_view->find('css', 'li.dropbutton-toggle button')->click();
97     $disable_button = $enabled_view->find('css', 'li.disable.dropbutton-action a');
98     // Check that the disable button is visible now.
99     $this->assertTrue($disable_button->isVisible());
100     $disable_button->click();
101
102     $session->assertWaitOnAjaxRequest();
103
104     $enabled_rows = $page->findAll('css', 'tr.views-ui-list-enabled');
105     $enabled_rows = $this->filterVisibleElements($enabled_rows);
106     $disabled_rows = $page->findAll('css', 'tr.views-ui-list-disabled');
107     $disabled_rows = $this->filterVisibleElements($disabled_rows);
108
109     // Test that one enabled View has been moved to the disabled list.
110     $this->assertCount($enabled_views_count - 1, $enabled_rows);
111     $this->assertCount($disabled_views_count + 1, $disabled_rows);
112   }
113
114   /**
115    * Removes any non-visible elements from the passed array.
116    *
117    * @param array $elements
118    * @return array
119    */
120   protected function filterVisibleElements($elements) {
121     $elements = array_filter($elements, function($element) {
122       return $element->isVisible();
123     });
124     return $elements;
125   }
126
127 }