public function AdminToolbarToolsSortTest::testMenuSorting in Admin Toolbar 3.x
Same name and namespace in other branches
- 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\FunctionalCode
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);
}
}