function LocalActionTest::testLocalAction

Same name and namespace in other branches
  1. 9 core/modules/system/tests/src/Functional/Menu/LocalActionTest.php \Drupal\Tests\system\Functional\Menu\LocalActionTest::testLocalAction()
  2. 8.9.x core/modules/system/tests/src/Functional/Menu/LocalActionTest.php \Drupal\Tests\system\Functional\Menu\LocalActionTest::testLocalAction()
  3. 11.x core/modules/system/tests/src/Functional/Menu/LocalActionTest.php \Drupal\Tests\system\Functional\Menu\LocalActionTest::testLocalAction()

Tests appearance of local actions.

File

core/modules/system/tests/src/Functional/Menu/LocalActionTest.php, line 40

Class

LocalActionTest
Tests local actions derived from router and added/altered via hooks.

Namespace

Drupal\Tests\system\Functional\Menu

Code

public function testLocalAction() : void {
  $this->drupalGet('menu-test-local-action');
  // Ensure that both menu and route based actions are shown.
  $this->assertLocalAction([
    [
      Url::fromRoute('menu_test.local_action4'),
      'My dynamic-title action',
    ],
    [
      Url::fromRoute('menu_test.local_action4'),
      Html::escape("<script>alert('Welcome to the jungle!')</script>"),
    ],
    [
      Url::fromRoute('menu_test.local_action4'),
      Html::escape("<script>alert('Welcome to the derived jungle!')</script>"),
    ],
    [
      Url::fromRoute('menu_test.local_action2'),
      'My hook_menu action',
    ],
    [
      Url::fromRoute('menu_test.local_action3'),
      'My YAML discovery action',
    ],
    [
      Url::fromRoute('menu_test.local_action5'),
      'Title override',
    ],
  ]);
  // Test a local action title that changes based on a config value.
  $this->drupalGet(Url::fromRoute('menu_test.local_action6'));
  $this->assertLocalAction([
    [
      Url::fromRoute('menu_test.local_action5'),
      'Original title',
    ],
  ]);
  // Verify the expected cache tag in the response headers.
  $this->assertSession()
    ->responseHeaderContains('x-drupal-cache-tags', 'config:menu_test.links.action');
  /** @var \Drupal\Core\Config\Config $config */
  $config = $this->container
    ->get('config.factory')
    ->getEditable('menu_test.links.action');
  $config->set('title', 'New title');
  $config->save();
  $this->drupalGet(Url::fromRoute('menu_test.local_action6'));
  $this->assertLocalAction([
    [
      Url::fromRoute('menu_test.local_action5'),
      'New title',
    ],
  ]);
}

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