You are here

public function AdminToolbarToolsSortTest::testMenuSorting in Admin Toolbar 3.x

Same name and namespace in other branches
  1. 8.2 tests/src/Functional/AdminToolbarToolsSortTest.php \Drupal\Tests\admin_toolbar\Functional\AdminToolbarToolsSortTest::testMenuSorting()

Tests sorting of menus by label rather than machine name.

File

tests/src/Functional/AdminToolbarToolsSortTest.php, line 112

Class

AdminToolbarToolsSortTest
Tests Admin Toolbar tools functionality.

Namespace

Drupal\Tests\admin_toolbar\Functional

Code

public function testMenuSorting() {

  // Create and log in an administrative user.
  $this->adminUser = $this
    ->drupalCreateUser([
    'access toolbar',
    'access administration pages',
    'administer site configuration',
    'administer menu',
  ]);
  $menus = [
    'aaa' => 'qqq',
    'bbb' => 'ppp',
    'ccc' => 'ooo',
    'ddd' => 'nnn',
    'eee' => 'mmm',
    'fff' => 'lll',
    'ggg' => 'kkk',
    'hhh' => 'jjj',
    'iii' => 'iii',
    'jjj' => 'hhh',
    'kkk' => 'ggg',
    'lll' => 'fff',
    'mmm' => 'eee',
    'nnn' => 'ddd',
    'ooo' => 'ccc',
    'ppp' => 'bbb',
    'qqq' => 'aaa',
  ];
  foreach ($menus as $machine_name => $label) {
    $menu = Menu::create([
      'id' => $machine_name,
      'label' => $label,
    ]);
    $menu
      ->save();
  }
  $this
    ->drupalLogin($this->adminUser);
  $this->container
    ->get('plugin.manager.menu.link')
    ->rebuild();
  $this
    ->drupalGet('/admin');
  $results = $this
    ->getSession()
    ->getPage()
    ->findAll('xpath', '//a[contains(@href, "/admin/structure/menu/manage")]');
  $links = [];
  foreach ($results as $result) {
    $links[] = $result
      ->getAttribute('href');
  }
  $expected = [
    0 => '/admin/structure/menu/manage/qqq',
    1 => '/admin/structure/menu/manage/qqq/add',
    2 => '/admin/structure/menu/manage/qqq/delete',
    3 => '/admin/structure/menu/manage/admin',
    4 => '/admin/structure/menu/manage/admin/add',
    5 => '/admin/structure/menu/manage/ppp',
    6 => '/admin/structure/menu/manage/ppp/add',
    7 => '/admin/structure/menu/manage/ppp/delete',
    8 => '/admin/structure/menu/manage/ooo',
    9 => '/admin/structure/menu/manage/ooo/add',
    10 => '/admin/structure/menu/manage/ooo/delete',
    11 => '/admin/structure/menu/manage/nnn',
    12 => '/admin/structure/menu/manage/nnn/add',
    13 => '/admin/structure/menu/manage/nnn/delete',
    14 => '/admin/structure/menu/manage/mmm',
    15 => '/admin/structure/menu/manage/mmm/add',
    16 => '/admin/structure/menu/manage/mmm/delete',
    17 => '/admin/structure/menu/manage/lll',
    18 => '/admin/structure/menu/manage/lll/add',
    19 => '/admin/structure/menu/manage/lll/delete',
    20 => '/admin/structure/menu/manage/footer',
    21 => '/admin/structure/menu/manage/footer/add',
    22 => '/admin/structure/menu/manage/kkk',
    23 => '/admin/structure/menu/manage/kkk/add',
    24 => '/admin/structure/menu/manage/kkk/delete',
    25 => '/admin/structure/menu/manage/jjj',
    26 => '/admin/structure/menu/manage/jjj/add',
    27 => '/admin/structure/menu/manage/jjj/delete',
    28 => '/admin/structure/menu/manage/iii',
    29 => '/admin/structure/menu/manage/iii/add',
    30 => '/admin/structure/menu/manage/iii/delete',
    31 => '/admin/structure/menu/manage/hhh',
    32 => '/admin/structure/menu/manage/hhh/add',
    33 => '/admin/structure/menu/manage/hhh/delete',
    34 => '/admin/structure/menu/manage/ggg',
    35 => '/admin/structure/menu/manage/ggg/add',
    36 => '/admin/structure/menu/manage/ggg/delete',
    37 => '/admin/structure/menu/manage/fff',
    38 => '/admin/structure/menu/manage/fff/add',
    39 => '/admin/structure/menu/manage/fff/delete',
    40 => '/admin/structure/menu/manage/main',
    41 => '/admin/structure/menu/manage/main/add',
    42 => '/admin/structure/menu/manage/eee',
    43 => '/admin/structure/menu/manage/eee/add',
    44 => '/admin/structure/menu/manage/eee/delete',
    45 => '/admin/structure/menu/manage/ddd',
    46 => '/admin/structure/menu/manage/ddd/add',
    47 => '/admin/structure/menu/manage/ddd/delete',
    48 => '/admin/structure/menu/manage/ccc',
    49 => '/admin/structure/menu/manage/ccc/add',
    50 => '/admin/structure/menu/manage/ccc/delete',
    51 => '/admin/structure/menu/manage/bbb',
    52 => '/admin/structure/menu/manage/bbb/add',
    53 => '/admin/structure/menu/manage/bbb/delete',
    54 => '/admin/structure/menu/manage/aaa',
    55 => '/admin/structure/menu/manage/aaa/add',
    56 => '/admin/structure/menu/manage/aaa/delete',
  ];
  foreach ($links as $key => $link) {

    // Using assert contains because prefaces the urls with "/subdirectory".
    $this
      ->assertStringContainsString($expected[$key], $link);
  }
}