MenuLinkContentFormTest.php in Drupal 8
File
core/modules/menu_link_content/tests/src/Functional/MenuLinkContentFormTest.php
View source
<?php
namespace Drupal\Tests\menu_link_content\Functional;
use Drupal\menu_link_content\Entity\MenuLinkContent;
use Drupal\Tests\BrowserTestBase;
class MenuLinkContentFormTest extends BrowserTestBase {
public static $modules = [
'menu_link_content',
];
protected $defaultTheme = 'stark';
protected $adminUser;
protected $basicUser;
protected function setUp() {
parent::setUp();
$this->adminUser = $this
->drupalCreateUser([
'administer menu',
'link to any page',
]);
$this->basicUser = $this
->drupalCreateUser([
'administer menu',
]);
$this
->drupalLogin($this->adminUser);
}
public function testMenuLinkContentFormLinkToAnyPage() {
$menu_link = MenuLinkContent::create([
'title' => 'Menu link test',
'provider' => 'menu_link_content',
'menu_name' => 'admin',
'link' => [
'uri' => 'internal:/user/login',
],
]);
$menu_link
->save();
$this
->drupalGet('/admin/structure/menu/item/' . $menu_link
->id() . '/edit');
$this
->assertSession()
->statusCodeEquals(200);
$this
->drupalLogin($this->basicUser);
$this
->drupalGet('/admin/structure/menu/item/' . $menu_link
->id() . '/edit');
$this
->assertSession()
->statusCodeEquals(403);
}
public function testMenuLinkContentForm() {
$this
->drupalGet('admin/structure/menu/manage/admin/add');
$element = $this
->xpath('//select[@id = :id]/option[@selected]', [
':id' => 'edit-menu-parent',
]);
$this
->assertNotEmpty($element, 'A default menu parent was found.');
$this
->assertEqual('admin:', $element[0]
->getValue(), '<Administration> menu is the parent.');
$this
->assertRaw('The location this menu link points to.');
$this
->drupalPostForm(NULL, [
'title[0][value]' => t('Front page'),
'link[0][uri]' => '<front>',
], t('Save'));
$this
->assertText(t('The menu link has been saved.'));
}
public function testMenuLinkContentFormValidation() {
$this
->drupalGet('admin/structure/menu/manage/admin/add');
$this
->drupalPostForm(NULL, [
'title[0][value]' => t('Test page'),
'link[0][uri]' => '<test>',
], t('Save'));
$this
->assertText(t('Manually entered paths should start with one of the following characters: / ? #'));
}
}