function QuickEditJavascriptTestBase::startQuickEditViaToolbar

Same name and namespace in other branches
  1. 8.9.x core/modules/quickedit/tests/src/FunctionalJavascript/QuickEditJavascriptTestBase.php \Drupal\Tests\quickedit\FunctionalJavascript\QuickEditJavascriptTestBase::startQuickEditViaToolbar()

Starts in-place editing of the given entity instance.

Parameters

string $entity_type_id: The entity type ID.

int $entity_id: The entity ID.

int $entity_instance_id: The entity instance ID. (Instance on the page.)

6 calls to QuickEditJavascriptTestBase::startQuickEditViaToolbar()
CKEditor5IntegrationTest::testArticleNode in core/modules/quickedit/tests/src/FunctionalJavascript/CKEditor5IntegrationTest.php
Tests if an article node can be in-place edited with Quick Edit.
CKEditor5IntegrationTest::testDiscard in core/modules/quickedit/tests/src/FunctionalJavascript/CKEditor5IntegrationTest.php
Tests that changes can be discarded.
LayoutBuilderIntegrationTest::testArticleNode in core/modules/quickedit/tests/src/FunctionalJavascript/LayoutBuilderIntegrationTest.php
Tests if an article node can be in-place edited with Quick Edit.
LayoutBuilderIntegrationTest::testCustomBlock in core/modules/quickedit/tests/src/FunctionalJavascript/LayoutBuilderIntegrationTest.php
Tests if a custom can be in-place edited with Quick Edit.
QuickEditFileTest::testRemove in core/modules/quickedit/tests/src/FunctionalJavascript/QuickEditFileTest.php
Tests if a file can be in-place removed with Quick Edit.

... See full list

File

core/modules/quickedit/tests/src/FunctionalJavascript/QuickEditJavascriptTestBase.php, line 49

Class

QuickEditJavascriptTestBase
Base class for testing the QuickEdit.

Namespace

Drupal\Tests\quickedit\FunctionalJavascript

Code

protected function startQuickEditViaToolbar($entity_type_id, $entity_id, $entity_instance_id) {
  $page = $this->getSession()
    ->getPage();
  $toolbar_edit_button_selector = '#toolbar-bar .contextual-toolbar-tab button';
  $entity_instance_selector = '[data-quickedit-entity-id="' . $entity_type_id . '/' . $entity_id . '"][data-quickedit-entity-instance-id="' . $entity_instance_id . '"]';
  $contextual_links_trigger_selector = '[data-contextual-id] > .trigger';
  // Assert the original page state does not have the toolbar's "Edit" button
  // pressed/activated, and hence none of the contextual link triggers should
  // be visible.
  $toolbar_edit_button = $page->find('css', $toolbar_edit_button_selector);
  $this->assertSame('false', $toolbar_edit_button->getAttribute('aria-pressed'), 'The "Edit" button in the toolbar is not yet pressed.');
  $this->assertFalse($toolbar_edit_button->hasClass('is-active'), 'The "Edit" button in the toolbar is not yet marked as active.');
  foreach ($page->findAll('css', $contextual_links_trigger_selector) as $dom_node) {
    /** @var \Behat\Mink\Element\NodeElement $dom_node */
    $this->assertTrue($dom_node->hasClass('visually-hidden'), 'The contextual links trigger "' . $dom_node->getParent()
      ->getAttribute('data-contextual-id') . '" is hidden.');
  }
  $this->assertTrue(TRUE, 'All contextual links triggers are hidden.');
  // Click the "Edit" button in the toolbar.
  $this->click($toolbar_edit_button_selector);
  // Assert the toolbar's "Edit" button is now pressed/activated, and hence
  // all of the contextual link triggers should be visible.
  $this->assertSame('true', $toolbar_edit_button->getAttribute('aria-pressed'), 'The "Edit" button in the toolbar is pressed.');
  $this->assertTrue($toolbar_edit_button->hasClass('is-active'), 'The "Edit" button in the toolbar is marked as active.');
  foreach ($page->findAll('css', $contextual_links_trigger_selector) as $dom_node) {
    /** @var \Behat\Mink\Element\NodeElement $dom_node */
    $this->assertFalse($dom_node->hasClass('visually-hidden'), 'The contextual links trigger "' . $dom_node->getParent()
      ->getAttribute('data-contextual-id') . '" is visible.');
  }
  $this->assertTrue(TRUE, 'All contextual links triggers are visible.');
  // @todo Press tab key to verify that tabbing is now constrained to only
  // contextual links triggers: https://www.drupal.org/node/2834776
  // Assert that the contextual links associated with the entity's contextual
  // links trigger are not visible.
  /** @var \Behat\Mink\Element\NodeElement $entity_contextual_links_container */
  $entity_contextual_links_container = $page->find('css', $entity_instance_selector)
    ->find('css', $contextual_links_trigger_selector)
    ->getParent();
  $this->assertFalse($entity_contextual_links_container->hasClass('open'));
  $this->assertTrue($entity_contextual_links_container->find('css', 'ul.contextual-links')
    ->hasAttribute('hidden'));
  // Click the contextual link trigger for the entity we want to Quick Edit.
  $this->click($entity_instance_selector . ' ' . $contextual_links_trigger_selector);
  $this->assertTrue($entity_contextual_links_container->hasClass('open'));
  $this->assertFalse($entity_contextual_links_container->find('css', 'ul.contextual-links')
    ->hasAttribute('hidden'));
  // Click the "Quick edit" contextual link.
  $this->click($entity_instance_selector . ' [data-contextual-id] ul.contextual-links li.quickedit a');
  // Assert the Quick Edit internal state is correct.
  $js_condition = <<<JS
Drupal.quickedit.collections.entities.where({isActive: true}).length === 1 && Drupal.quickedit.collections.entities.where({isActive: true})[0].get('entityID') === '{<span class="php-variable">$entity_type_id</span>}/{<span class="php-variable">$entity_id</span>}'
JS;
  $this->assertJsCondition($js_condition);
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.