admin_menu-8.x-3.x-dev/lib/Drupal/admin_menu/Tests/AdminMenuDynamicLinksTest.php
lib/Drupal/admin_menu/Tests/AdminMenuDynamicLinksTest.php
<?php namespace Drupal\admin_menu\Tests; /** * Tests appearance, localization, and escaping of dynamic links. */ class AdminMenuDynamicLinksTest extends AdminMenuTestBase { public static $modules = ['node']; public static function getInfo() { return [ 'name' => 'Dynamic links', 'description' => 'Tests appearance, localization, and escaping of dynamic links.', 'group' => 'Administration menu', ]; } /** * Tests node type links. */ function testNode() { // The $type is used on tests. @codingStandardsIgnoreLine $type = $this->drupalCreateContentType(['type' => 'article', 'name' => 'Article']); // Create a content-type with special characters. $type = $this->drupalCreateContentType(['type' => 'special', 'name' => 'Cool & Special']); $permissions = $this->basePermissions + [ 'administer content types', // @todo D8: node_access() unconditionally checks for the 'access content' // permission for all $ops. 'access content', 'create article content', 'create special content', ]; $this->admin_user = $this->drupalCreateUser($permissions); $this->drupalLogin($this->admin_user); // Verify that dynamic links are displayed. $this->drupalGet(''); $this->assertElementByXPath('//div[@id="admin-menu"]', [], t('Administration menu found.')); $this->assertElementByXPath('//div[@id="admin-menu"]//a[contains(@href, :path)]', [':path' => 'admin/structure/types'], "Structure » Content types link found."); // Verify link title output escaping. $this->assertNoRaw('Cool & Special'); $this->assertRaw(check_plain('Cool & Special')); // Verify Manage content type links. $links = [ 'admin/structure/types/manage/article' => 'Article', 'admin/structure/types/manage/special' => 'Cool & Special', ]; foreach ($links as $path => $title) { $this->assertElementByXPath('//div[@id="admin-menu"]//a[contains(@href, :path) and text()=:title]', [ ':path' => $path, ':title' => $title, ], "Structure » Content types » $title link found."); } // Verify Add content links. // @todo Fix expansion of node/add. return; $links = [ 'node/add/article' => 'Article', 'node/add/special' => 'Cool & Special', ]; foreach ($links as $path => $title) { $this->assertElementByXPath('//div[@id="admin-menu"]//a[contains(@href, :path) and text()=:title]', [ ':path' => $path, ':title' => $title, ], "Add content » $title link found."); } } /** * Tests Add content links. */ function testNodeAdd() { // The $type is used on tests. @codingStandardsIgnoreLine $type = $this->drupalCreateContentType(['type' => 'article', 'name' => 'Article']); // Verify that "Add content" does not appear for unprivileged users. $permissions = $this->basePermissions + [ 'access content', ]; $this->web_user = $this->drupalCreateUser($permissions); $this->drupalLogin($this->web_user); $this->assertNoText(t('Add content')); // Verify "Add content" appears below "Content" for administrative users. $permissions = $this->basePermissions + [ 'access content overview', 'access content', 'create article content', ]; $this->admin_user = $this->drupalCreateUser($permissions); $this->drupalLogin($this->admin_user); $this->assertLinkTrailByTitle([ t('Content'), t('Add content'), ]); // Verify "Add content" appears on the top-level for regular users. $permissions = $this->basePermissions + [ 'access content', 'create article content', ]; $this->web_user = $this->drupalCreateUser($permissions); $this->drupalLogin($this->web_user); $this->assertLinkTrailByTitle([ t('Add content'), ]); } }