View source
<?php
namespace Drupal\Tests\admin_toolbar_search\FunctionalJavascript;
use Drupal\FunctionalJavascriptTests\WebDriverTestBase;
use Drupal\system\Entity\Menu;
abstract class AdminToolbarSearchTestBase extends WebDriverTestBase {
protected $defaultTheme = 'stark';
protected static $modules = [
'admin_toolbar_search',
'node',
'media',
'field_ui',
'menu_ui',
'block',
];
protected $userWithAccess;
protected $noAccessUser;
public function setUp() : void {
parent::setUp();
$baby_names = [
'ada' => 'Ada',
'amara' => 'Amara',
'amelia' => 'Amelia',
'arabella' => 'Arabella',
'asher' => 'Asher',
'astrid' => 'Astrid',
'atticus' => 'Atticus',
'aurora' => 'Aurora',
'ava' => 'Ava',
'cora' => 'Cora',
'eleanor' => 'Eleanor',
'eloise' => 'Eloise',
'felix' => 'Felix',
'freya' => 'Freya',
'genevieve' => 'Genevieve',
'isla' => 'Isla',
'jasper' => 'Jasper',
'luna' => 'Luna',
'maeve' => 'Maeve',
'milo' => 'Milo',
'nora' => 'Nora',
'olivia' => 'Olivia',
'ophelia' => 'Ophelia',
'posie' => 'Posie',
'rose' => 'Rose',
'silas' => 'Silas',
'soren' => 'Soren',
];
foreach ($baby_names as $id => $label) {
$menu = Menu::create([
'id' => $id,
'label' => $label,
]);
$menu
->save();
}
$this
->drupalPlaceBlock('local_tasks_block');
$permissions = [
'access toolbar',
'administer menu',
'access administration pages',
'administer site configuration',
'administer content types',
];
$this->noAccessUser = $this
->drupalCreateUser($permissions);
$permissions[] = 'use admin toolbar search';
$this->userWithAccess = $this
->drupalCreateUser($permissions);
}
protected function assertSuggestionContains($search, $contains) {
$this
->resetSearch();
$page = $this
->getSession()
->getPage();
$page
->fillField('admin-toolbar-search-input', $search);
$this
->getSession()
->getDriver()
->keyDown('//input[@id="admin-toolbar-search-input"]', ' ');
$page
->waitFor(3, function () use ($page) {
return $page
->find('css', 'ul.ui-autocomplete')
->isVisible() === TRUE;
});
$suggestions_markup = $page
->find('css', 'ul.ui-autocomplete')
->getHtml();
$this
->assertStringContainsString($contains, $suggestions_markup);
}
protected function assertSuggestionNotContains($search, $contains) {
$this
->resetSearch();
$page = $this
->getSession()
->getPage();
$page
->fillField('admin-toolbar-search-input', $search);
$this
->getSession()
->getDriver()
->keyDown('//input[@id="admin-toolbar-search-input"]', ' ');
$page
->waitFor(3, function () use ($page) {
return $page
->find('css', 'ul.ui-autocomplete')
->isVisible() === TRUE;
});
if ($page
->find('css', 'ul.ui-autocomplete')
->isVisible() === FALSE) {
return;
}
else {
$suggestions_markup = $page
->find('css', 'ul.ui-autocomplete')
->getHtml();
$this
->assertNotContains($contains, $suggestions_markup);
}
}
protected function resetSearch() {
$page = $this
->getSession()
->getPage();
$page
->fillField('admin-toolbar-search-input', '');
$this
->getSession()
->getDriver()
->keyDown('//input[@id="admin-toolbar-search-input"]', ' ');
$page
->waitFor(3, function () use ($page) {
return $page
->find('css', 'ul.ui-autocomplete')
->isVisible() === FALSE;
});
}
protected function assertMenuHasHref($url) {
$this
->assertSession()
->elementExists('xpath', '//div[@id="toolbar-item-administration-tray"]//a[contains(@href, "' . $url . '")]');
}
protected function assertMenuDoesNotHaveHref($url) {
$this
->assertSession()
->elementNotExists('xpath', '//div[@id="toolbar-item-administration-tray"]//a[contains(@href, "' . $url . '")]');
}
}