You are here

public function EditModeTest::testEditModeEnableDisable in Drupal 9

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

Tests enabling and disabling edit mode.

File

core/modules/contextual/tests/src/FunctionalJavascript/EditModeTest.php, line 54

Class

EditModeTest
Tests edit mode.

Namespace

Drupal\Tests\contextual\FunctionalJavascript

Code

public function testEditModeEnableDisable() {
  $web_assert = $this
    ->assertSession();
  $page = $this
    ->getSession()
    ->getPage();

  // Get the page twice to ensure edit mode remains enabled after a new page
  // request.
  for ($page_get_count = 0; $page_get_count < 2; $page_get_count++) {
    $this
      ->drupalGet('user');
    $expected_restricted_tab_count = 1 + count($page
      ->findAll('css', '[data-contextual-id]'));

    // After the page loaded we need to additionally wait until the settings
    // tray Ajax activity is done.
    $web_assert
      ->assertWaitOnAjaxRequest();
    if ($page_get_count == 0) {
      $unrestricted_tab_count = $this
        ->getTabbableElementsCount();
      $this
        ->assertGreaterThan($expected_restricted_tab_count, $unrestricted_tab_count);

      // Enable edit mode.
      // After the first page load the page will be in edit mode when loaded.
      $this
        ->pressToolbarEditButton();
    }
    $this
      ->assertAnnounceEditMode();
    $this
      ->assertSame($expected_restricted_tab_count, $this
      ->getTabbableElementsCount());

    // Disable edit mode.
    $this
      ->pressToolbarEditButton();
    $this
      ->assertAnnounceLeaveEditMode();
    $this
      ->assertSame($unrestricted_tab_count, $this
      ->getTabbableElementsCount());

    // Enable edit mode again.
    $this
      ->pressToolbarEditButton();

    // Finally assert that the 'edit mode enabled' announcement is still
    // correct after toggling the edit mode at least once.
    $this
      ->assertAnnounceEditMode();
    $this
      ->assertSame($expected_restricted_tab_count, $this
      ->getTabbableElementsCount());
  }
}