ClaroViewsUiTest.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. <?php
  2. namespace Drupal\FunctionalJavascriptTests\Theme;
  3. use Drupal\FunctionalJavascriptTests\WebDriverTestBase;
  4. /**
  5. * Runs tests on Views UI using Claro.
  6. *
  7. * @group claro
  8. */
  9. class ClaroViewsUiTest extends WebDriverTestBase {
  10. /**
  11. * {@inheritdoc}
  12. */
  13. protected static $modules = ['views_ui'];
  14. /**
  15. * {@inheritdoc}
  16. */
  17. protected $defaultTheme = 'claro';
  18. /**
  19. * {@inheritdoc}
  20. */
  21. protected function setUp() {
  22. parent::setUp();
  23. // Disable automatic live preview to make the sequence of calls clearer.
  24. $this->config('views.settings')->set('ui.always_live_preview', FALSE)->save();
  25. // Create the test user and log in.
  26. $admin_user = $this->drupalCreateUser([
  27. 'administer views',
  28. 'access administration pages',
  29. 'view the administration theme',
  30. ]);
  31. $this->drupalLogin($admin_user);
  32. }
  33. /**
  34. * Tests Views UI display menu tabs CSS classes.
  35. *
  36. * Ensures that the CSS classes added to display menu tabs are preserved when
  37. * Views UI is updated with AJAX.
  38. */
  39. public function testViewsUiTabsCssClasses() {
  40. $this->drupalGet('admin/structure/views/view/who_s_online');
  41. $assert_session = $this->assertSession();
  42. $assert_session->elementExists('css', '#views-display-menu-tabs.views-tabs.views-tabs--secondary');
  43. // Click on the Display name and wait for the Views UI dialog.
  44. $assert_session->elementExists('css', '#edit-display-settings-top .views-display-setting a')->click();
  45. $this->assertNotNull($this->assertSession()->waitForElement('css', '.js-views-ui-dialog'));
  46. // Click the Apply button of the dialog.
  47. $assert_session->elementExists('css', '.js-views-ui-dialog .ui-dialog-buttonpane')->findButton('Apply')->press();
  48. // Wait for AJAX to finish.
  49. $assert_session->assertWaitOnAjaxRequest();
  50. // Check that the display menu tabs list still has the expected CSS classes.
  51. $assert_session->elementExists('css', '#views-display-menu-tabs.views-tabs.views-tabs--secondary');
  52. }
  53. /**
  54. * Tests Views UI dropbutton CSS classes.
  55. *
  56. * Ensures that the CSS classes added to the Views UI extra actions dropbutton
  57. * in .views-display-top are preserved when Views UI is refreshed with AJAX.
  58. */
  59. public function testViewsUiDropButtonCssClasses() {
  60. $this->drupalGet('admin/structure/views/view/who_s_online');
  61. $assert_session = $this->assertSession();
  62. $extra_actions_dropbutton_list = $assert_session->elementExists('css', '#views-display-extra-actions.dropbutton--small');
  63. $list_item_selectors = ['li:first-child', 'li:last-child'];
  64. // Test list item CSS classes.
  65. foreach ($list_item_selectors as $list_item_selector) {
  66. $this->assertNotNull($extra_actions_dropbutton_list->find('css', "$list_item_selector.dropbutton__item.dropbutton__item--small"));
  67. }
  68. // Click on the Display name and wait for the Views UI dialog.
  69. $assert_session->elementExists('css', '#edit-display-settings-top .views-display-setting a')->click();
  70. $this->assertNotNull($this->assertSession()->waitForElement('css', '.js-views-ui-dialog'));
  71. // Click the Apply button of the dialog.
  72. $assert_session->elementExists('css', '.js-views-ui-dialog .ui-dialog-buttonpane')->findButton('Apply')->press();
  73. // Wait for AJAX to finish.
  74. $this->assertSession()->assertWaitOnAjaxRequest();
  75. // Check that the drop button list still has the expected CSS classes.
  76. $this->assertTrue($extra_actions_dropbutton_list->hasClass('dropbutton--small'));
  77. // Check list item CSS classes.
  78. foreach ($list_item_selectors as $list_item_selector) {
  79. $this->assertNotNull($extra_actions_dropbutton_list->find('css', "$list_item_selector.dropbutton__item.dropbutton__item--small"));
  80. }
  81. }
  82. }