You are here

public function ContextualLinksTest::testContextualLinksClick in Drupal 9

Same name and namespace in other branches
  1. 8 core/modules/contextual/tests/src/FunctionalJavascript/ContextualLinksTest.php \Drupal\Tests\contextual\FunctionalJavascript\ContextualLinksTest::testContextualLinksClick()

Tests clicking contextual links.

File

core/modules/contextual/tests/src/FunctionalJavascript/ContextualLinksTest.php, line 69

Class

ContextualLinksTest
Tests the UI for correct contextual links.

Namespace

Drupal\Tests\contextual\FunctionalJavascript

Code

public function testContextualLinksClick() {
  $this->container
    ->get('module_installer')
    ->install([
    'contextual_test',
  ]);

  // Test clicking contextual link without toolbar.
  $this
    ->drupalGet('user');
  $this
    ->assertSession()
    ->assertWaitOnAjaxRequest();
  $this
    ->clickContextualLink('#block-branding', 'Test Link');
  $this
    ->assertSession()
    ->pageTextContains('Everything is contextual!');

  // Test click a contextual link that uses ajax.
  $this
    ->drupalGet('user');
  $this
    ->assertSession()
    ->assertWaitOnAjaxRequest();
  $current_page_string = 'NOT_RELOADED_IF_ON_PAGE';
  $this
    ->getSession()
    ->executeScript('document.body.appendChild(document.createTextNode("' . $current_page_string . '"));');
  $this
    ->clickContextualLink('#block-branding', 'Test Link with Ajax');
  $this
    ->assertNotEmpty($this
    ->assertSession()
    ->waitForElementVisible('css', '#drupal-modal'));
  $this
    ->assertSession()
    ->elementContains('css', '#drupal-modal', 'Everything is contextual!');

  // Check to make sure that page was not reloaded.
  $this
    ->assertSession()
    ->pageTextContains($current_page_string);

  // Test clicking contextual link with toolbar.
  $this->container
    ->get('module_installer')
    ->install([
    'toolbar',
  ]);
  $this
    ->grantPermissions(Role::load(Role::AUTHENTICATED_ID), [
    'access toolbar',
  ]);
  $this
    ->drupalGet('user');
  $this
    ->assertSession()
    ->assertWaitOnAjaxRequest();

  // Click "Edit" in toolbar to show contextual links.
  $this
    ->getSession()
    ->getPage()
    ->find('css', '.contextual-toolbar-tab button')
    ->press();
  $this
    ->clickContextualLink('#block-branding', 'Test Link', FALSE);
  $this
    ->assertSession()
    ->pageTextContains('Everything is contextual!');
}