You are here

public function DisplayTest::testPageContextualLinks in Drupal 9

Same name and namespace in other branches
  1. 8 core/modules/views_ui/tests/src/FunctionalJavascript/DisplayTest.php \Drupal\Tests\views_ui\FunctionalJavascript\DisplayTest::testPageContextualLinks()
  2. 10 core/modules/views_ui/tests/src/FunctionalJavascript/DisplayTest.php \Drupal\Tests\views_ui\FunctionalJavascript\DisplayTest::testPageContextualLinks()

Tests contextual links on Views page displays.

File

core/modules/views_ui/tests/src/FunctionalJavascript/DisplayTest.php, line 81

Class

DisplayTest
Tests the display UI.

Namespace

Drupal\Tests\views_ui\FunctionalJavascript

Code

public function testPageContextualLinks() {
  $view = View::load('test_display');
  $view
    ->enable()
    ->save();
  $this->container
    ->get('router.builder')
    ->rebuildIfNeeded();

  // Create node so the view has content and the contextual area is higher
  // than 0 pixels.
  $this
    ->drupalCreateContentType([
    'type' => 'page',
  ]);
  $this
    ->createNode();

  // When no "main content" block is placed, we find a contextual link
  // placeholder for editing just the view.
  $this
    ->drupalGet('test-display');
  $page = $this
    ->getSession()
    ->getPage();
  $this
    ->assertSession()
    ->assertWaitOnAjaxRequest();
  $selector = '.view-test-display';
  $this
    ->toggleContextualTriggerVisibility($selector);
  $element = $this
    ->getSession()
    ->getPage()
    ->find('css', $selector);
  $element
    ->find('css', '.contextual button')
    ->press();
  $contextual_container_id = 'entity.view.edit_form:view=test_display:location=page&name=test_display&display_id=page_1&langcode=en';
  $contextual_container = $page
    ->find('css', '[data-contextual-id="' . $contextual_container_id . '"]');
  $this
    ->assertNotEmpty($contextual_container);
  $edit_link = $contextual_container
    ->findLink('Edit view');
  $this
    ->assertNotEmpty($edit_link);

  // When a "main content" is placed, we still find a contextual link
  // placeholder for editing just the view (not the main content block).
  // @see system_block_view_system_main_block_alter()
  $this
    ->drupalPlaceBlock('system_main_block', [
    'id' => 'main_content',
  ]);
  $contextual_container = $page
    ->find('css', '[data-contextual-id="' . $contextual_container_id . '"]');
  $this
    ->assertNotEmpty($contextual_container);
}