public function AdminToolbarToolsSearchTest::testToolbarSearch in Admin Toolbar 3.x
Same name and namespace in other branches
- 8.2 admin_toolbar_search/tests/src/FunctionalJavascript/AdminToolbarToolsSearchTest.php \Drupal\Tests\admin_toolbar_search\FunctionalJavascript\AdminToolbarToolsSearchTest::testToolbarSearch()
Tests search functionality with admin_toolbar_tools enabled.
File
- admin_toolbar_search/
tests/ src/ FunctionalJavascript/ AdminToolbarToolsSearchTest.php, line 109
Class
- AdminToolbarToolsSearchTest
- Test the functionality of admin toolbar search.
Namespace
Drupal\Tests\admin_toolbar_search\FunctionalJavascriptCode
public function testToolbarSearch() {
$search_tab = '#admin-toolbar-search-tab';
$search_toolbar_item = '#toolbar-item-administration-search';
$search_tray = '#toolbar-item-administration-search-tray';
$this
->drupalLogin($this->adminUser);
$assert_session = $this
->assertSession();
$assert_session
->responseContains('admin.toolbar_search.css');
$assert_session
->responseContains('admin_toolbar_search.js');
$assert_session
->waitForElementVisible('css', $search_tab);
$assert_session
->waitForElementVisible('css', $search_toolbar_item);
$assert_session
->waitForElementVisible('css', $search_tray);
$this
->assertSuggestionContains('basic', 'admin/config/system/site-information');
// Rebuild menu items.
drupal_flush_all_caches();
// Test that the route admin_toolbar.search returns expected json.
$this
->drupalGet('/admin/admin-toolbar-search');
$search_menus = [
'maeve',
'milo',
'nora',
'olivia',
'ophelia',
'posie',
'rose',
'silas',
'soren',
];
$toolbar_menus = [
'ada',
'amara',
'amelia',
'arabella',
'asher',
'astrid',
'atticus',
'aurora',
'ava',
];
foreach ($search_menus as $menu_id) {
$assert_session
->responseContains('\\/admin\\/structure\\/menu\\/manage\\/' . $menu_id);
}
foreach ($toolbar_menus as $menu_id) {
$assert_session
->responseNotContains('\\/admin\\/structure\\/menu\\/manage\\/' . $menu_id);
}
$this
->drupalGet('/admin');
foreach ($search_menus as $menu_id) {
$this
->assertMenuDoesNotHaveHref('/admin/structure/menu/manage/' . $menu_id);
}
foreach ($toolbar_menus as $menu_id) {
$this
->assertMenuHasHref('/admin/structure/menu/manage/' . $menu_id);
}
$this
->drupalGet('admin/structure/types/manage/article/fields');
$assert_session
->waitForElementVisible('css', $search_tray);
$this
->assertSuggestionContains('article manage fields', '/admin/structure/types/manage/article/fields');
$suggestions = $assert_session
->waitForElementVisible('css', 'ul.ui-autocomplete');
// Assert there is only one suggestion with a link to
// /admin/structure/types/manage/article/fields.
$count = count($suggestions
->findAll('xpath', '//span[contains(text(), "/admin/structure/types/manage/article/fields")]'));
$this
->assertEquals(1, $count);
// Test that bundle within admin toolbar appears in search.
$this
->assertSuggestionContains('lola', 'admin/structure/media/manage/lola/fields');
// Assert that a link after the limit doesn't appear in admin toolbar.
$zora_url = '/admin/structure/media/manage/zora/fields';
$assert_session
->elementNotContains('css', '#toolbar-administration', $zora_url);
// Assert that a link excluded from admin toolbar appears in search.
$this
->assertSuggestionContains('zora', $zora_url);
// Test that adding a new bundle updates the extra links loaded from
// admin_toolbar.search route.
$this
->createMediaType('image', [
'id' => 'zuzu',
'label' => 'Zuzu',
]);
$this
->drupalGet('admin');
$assert_session
->waitForElementVisible('css', $search_tray);
$this
->assertSuggestionContains('zuzu', '/admin/structure/media/manage/zuzu/fields');
// Test that deleting a bundle updates the extra links loaded from
// admin_toolbar.search route.
$zora = MediaType::load('zora');
$zora
->delete();
$this
->getSession()
->reload();
$assert_session
->waitForElementVisible('css', $search_tray);
$this
->assertSuggestionNotContains('zora', $zora);
}