You are here

function MenuTest::testMenuQueryAndFragment in Zircon Profile 8.0

Same name and namespace in other branches
  1. 8 core/modules/menu_ui/src/Tests/MenuTest.php \Drupal\menu_ui\Tests\MenuTest::testMenuQueryAndFragment()

Adds and removes a menu link with a query string and fragment.

File

core/modules/menu_ui/src/Tests/MenuTest.php, line 496
Contains \Drupal\menu_ui\Tests\MenuTest.

Class

MenuTest
Add a custom menu, add menu links to the custom menu and Tools menu, check their data, and delete them using the UI.

Namespace

Drupal\menu_ui\Tests

Code

function testMenuQueryAndFragment() {
  $this
    ->drupalLogin($this->adminUser);

  // Make a path with query and fragment on.
  $path = '/test-page?arg1=value1&arg2=value2';
  $item = $this
    ->addMenuLink('', $path);
  $this
    ->drupalGet('admin/structure/menu/item/' . $item
    ->id() . '/edit');
  $this
    ->assertFieldByName('link[0][uri]', $path, 'Path is found with both query and fragment.');

  // Now change the path to something without query and fragment.
  $path = '/test-page';
  $this
    ->drupalPostForm('admin/structure/menu/item/' . $item
    ->id() . '/edit', array(
    'link[0][uri]' => $path,
  ), t('Save'));
  $this
    ->drupalGet('admin/structure/menu/item/' . $item
    ->id() . '/edit');
  $this
    ->assertFieldByName('link[0][uri]', $path, 'Path no longer has query or fragment.');

  // Use <front>#fragment and ensure that saving it does not lose its content.
  $path = '<front>?arg1=value#fragment';
  $item = $this
    ->addMenuLink('', $path);
  $this
    ->drupalGet('admin/structure/menu/item/' . $item
    ->id() . '/edit');
  $this
    ->assertFieldByName('link[0][uri]', $path, 'Path is found with both query and fragment.');
  $this
    ->drupalPostForm('admin/structure/menu/item/' . $item
    ->id() . '/edit', array(), t('Save'));
  $this
    ->drupalGet('admin/structure/menu/item/' . $item
    ->id() . '/edit');
  $this
    ->assertFieldByName('link[0][uri]', $path, 'Path is found with both query and fragment.');
}