You are here

public function AjaxTest::testAjaxWithAdminRoute in Drupal 9

Same name and namespace in other branches
  1. 8 core/tests/Drupal/FunctionalJavascriptTests/Ajax/AjaxTest.php \Drupal\FunctionalJavascriptTests\Ajax\AjaxTest::testAjaxWithAdminRoute()

File

core/tests/Drupal/FunctionalJavascriptTests/Ajax/AjaxTest.php, line 24

Class

AjaxTest
Tests AJAX responses.

Namespace

Drupal\FunctionalJavascriptTests\Ajax

Code

public function testAjaxWithAdminRoute() {
  \Drupal::service('theme_installer')
    ->install([
    'stable',
    'seven',
  ]);
  $theme_config = \Drupal::configFactory()
    ->getEditable('system.theme');
  $theme_config
    ->set('admin', 'seven');
  $theme_config
    ->set('default', 'stable');
  $theme_config
    ->save();
  $account = $this
    ->drupalCreateUser([
    'view the administration theme',
  ]);
  $this
    ->drupalLogin($account);

  // First visit the site directly via the URL. This should render it in the
  // admin theme.
  $this
    ->drupalGet('admin/ajax-test/theme');
  $assert = $this
    ->assertSession();
  $assert
    ->pageTextContains('Current theme: seven');

  // Now click the modal, which should also use the admin theme.
  $this
    ->drupalGet('ajax-test/dialog');
  $assert
    ->pageTextNotContains('Current theme: stable');
  $this
    ->clickLink('Link 8 (ajax)');
  $assert
    ->assertWaitOnAjaxRequest();
  $assert
    ->pageTextContains('Current theme: stable');
  $assert
    ->pageTextNotContains('Current theme: seven');
}