You are here

public function ThrobberTest::testThemingThrobberElement in Drupal 9

Same name and namespace in other branches
  1. 8 core/tests/Drupal/FunctionalJavascriptTests/Ajax/ThrobberTest.php \Drupal\FunctionalJavascriptTests\Ajax\ThrobberTest::testThemingThrobberElement()
  2. 10 core/tests/Drupal/FunctionalJavascriptTests/Ajax/ThrobberTest.php \Drupal\FunctionalJavascriptTests\Ajax\ThrobberTest::testThemingThrobberElement()

Tests theming throbber element.

File

core/tests/Drupal/FunctionalJavascriptTests/Ajax/ThrobberTest.php, line 45

Class

ThrobberTest
Tests the throbber.

Namespace

Drupal\FunctionalJavascriptTests\Ajax

Code

public function testThemingThrobberElement() {
  $session = $this
    ->getSession();
  $web_assert = $this
    ->assertSession();
  $page = $session
    ->getPage();
  $custom_ajax_progress_indicator_fullscreen = <<<JS
      Drupal.theme.ajaxProgressIndicatorFullscreen = function () {
        return '<div class="custom-ajax-progress-fullscreen"></div>';
      };
JS;
  $custom_ajax_progress_throbber = <<<JS
      Drupal.theme.ajaxProgressThrobber = function (message) {
        return '<div class="custom-ajax-progress-throbber"></div>';
      };
JS;
  $custom_ajax_progress_message = <<<JS
      Drupal.theme.ajaxProgressMessage = function (message) {
        return '<div class="custom-ajax-progress-message">Hold door!</div>';
      };
JS;
  $this
    ->drupalGet('admin/structure/views/view/content');
  $web_assert
    ->assertNoElementAfterWait('css', '.ajax-progress-fullscreen');

  // Test theming fullscreen throbber.
  $session
    ->executeScript($custom_ajax_progress_indicator_fullscreen);
  hold_test_response(TRUE);
  $page
    ->clickLink('Content: Published (grouped)');
  $this
    ->assertNotNull($web_assert
    ->waitForElement('css', '.custom-ajax-progress-fullscreen'), 'Custom ajaxProgressIndicatorFullscreen.');
  hold_test_response(FALSE);
  $web_assert
    ->assertNoElementAfterWait('css', '.custom-ajax-progress-fullscreen');

  // Test theming throbber message.
  $web_assert
    ->waitForElementVisible('css', '[data-drupal-selector="edit-options-group-info-add-group"]');
  $session
    ->executeScript($custom_ajax_progress_message);
  hold_test_response(TRUE);
  $page
    ->pressButton('Add another item');
  $this
    ->assertNotNull($web_assert
    ->waitForElement('css', '.ajax-progress-throbber .custom-ajax-progress-message'), 'Custom ajaxProgressMessage.');
  hold_test_response(FALSE);
  $web_assert
    ->assertNoElementAfterWait('css', '.ajax-progress-throbber');

  // Test theming throbber.
  $web_assert
    ->waitForElementVisible('css', '[data-drupal-selector="edit-options-group-info-group-items-3-title"]');
  $session
    ->executeScript($custom_ajax_progress_throbber);
  hold_test_response(TRUE);
  $page
    ->pressButton('Add another item');
  $this
    ->assertNotNull($web_assert
    ->waitForElement('css', '.custom-ajax-progress-throbber'), 'Custom ajaxProgressThrobber.');
  hold_test_response(FALSE);
  $web_assert
    ->assertNoElementAfterWait('css', '.custom-ajax-progress-throbber');
}