protected function MenuUiJavascriptTest::addCustomMenu in Drupal 10
Same name and namespace in other branches
- 8 core/modules/menu_ui/tests/src/FunctionalJavascript/MenuUiJavascriptTest.php \Drupal\Tests\menu_ui\FunctionalJavascript\MenuUiJavascriptTest::addCustomMenu()
- 9 core/modules/menu_ui/tests/src/FunctionalJavascript/MenuUiJavascriptTest.php \Drupal\Tests\menu_ui\FunctionalJavascript\MenuUiJavascriptTest::addCustomMenu()
Creates a custom menu.
Return value
\Drupal\system\Entity\Menu The custom menu that has been created.
File
- core/
modules/ menu_ui/ tests/ src/ FunctionalJavascript/ MenuUiJavascriptTest.php, line 75
Class
- MenuUiJavascriptTest
- Tests custom menu and menu links operations using the UI.
Namespace
Drupal\Tests\menu_ui\FunctionalJavascriptCode
protected function addCustomMenu() {
// Try adding a menu using a menu_name that is too long.
$label = $this
->randomMachineName(16);
$menu_id = strtolower($this
->randomMachineName(MenuStorage::MAX_ID_LENGTH + 1));
$this
->drupalGet('admin/structure/menu/add');
$page = $this
->getSession()
->getPage();
// Type the label to activate the machine name field and the edit button.
$page
->fillField('Title', $label);
// Wait for the machine name widget to be activated.
$this
->assertSession()
->waitForElementVisible('css', 'button[type=button].link:contains(Edit)');
// Activate the machine name text field.
$page
->pressButton('Edit');
// Try to fill a text longer than the allowed limit.
$page
->fillField('Menu name', $menu_id);
$page
->pressButton('Save');
// Check that the menu was saved with the ID truncated to the max length.
$menu = Menu::load(substr($menu_id, 0, MenuStorage::MAX_ID_LENGTH));
$this
->assertEquals($label, $menu
->label());
// Check that the menu was added.
$this
->drupalGet('admin/structure/menu');
$this
->assertSession()
->pageTextContains($label);
// Confirm that the custom menu block is available.
$this
->drupalGet('admin/structure/block/list/' . $this
->config('system.theme')
->get('default'));
$this
->clickLink('Place block');
// Wait for the modal dialog to be loaded.
$this
->assertSession()
->waitForElement('css', "div[aria-describedby=drupal-modal]");
// Check that the block is available to be placed.
$this
->assertSession()
->pageTextContains($label);
return $menu;
}