You are here

protected function MenuUiJavascriptTest::addCustomMenu in Drupal 10

Same name and namespace in other branches
  1. 8 core/modules/menu_ui/tests/src/FunctionalJavascript/MenuUiJavascriptTest.php \Drupal\Tests\menu_ui\FunctionalJavascript\MenuUiJavascriptTest::addCustomMenu()
  2. 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\FunctionalJavascript

Code

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;
}