LocalActionTest.php in Zircon Profile 8.0
Same filename in this branch
Same filename and directory in other branches
Namespace
Drupal\system\Tests\MenuFile
core/modules/system/src/Tests/Menu/LocalActionTest.phpView source
<?php
/**
* @file
* Contains \Drupal\system\Tests\Menu\LocalActionTest.
*/
namespace Drupal\system\Tests\Menu;
use Drupal\Component\Utility\Html;
use Drupal\Core\Url;
use Drupal\simpletest\WebTestBase;
/**
* Tests local actions derived from router and added/altered via hooks.
*
* @group Menu
*/
class LocalActionTest extends WebTestBase {
/**
* Modules to enable.
*
* @var string[]
*/
public static $modules = [
'block',
'menu_test',
];
/**
* {@inheritdoc}
*/
protected function setUp() {
parent::setUp();
$this
->drupalPlaceBlock('local_actions_block');
}
/**
* Tests appearance of local actions.
*/
public function testLocalAction() {
$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',
],
]);
}
/**
* Asserts local actions in the page output.
*
* @param array $actions
* A list of expected action link titles, keyed by the hrefs.
*/
protected function assertLocalAction(array $actions) {
$elements = $this
->xpath('//a[contains(@class, :class)]', array(
':class' => 'button-action',
));
$index = 0;
foreach ($actions as $action) {
/** @var \Drupal\Core\Url $url */
list($url, $title) = $action;
// SimpleXML gives us the unescaped text, not the actual escaped markup,
// so use a pattern instead to check the raw content.
// This behaviour is a bug in libxml, see
// https://bugs.php.net/bug.php?id=49437.
$this
->assertPattern('@<a [^>]*class="[^"]*button-action[^"]*"[^>]*>' . preg_quote($title, '@') . '</@');
$this
->assertEqual($elements[$index]['href'], $url
->toString());
$index++;
}
}
}
Classes
Name | Description |
---|---|
LocalActionTest | Tests local actions derived from router and added/altered via hooks. |