class ShortcutLinksTest
Same name in other branches
- 9 core/modules/shortcut/tests/src/Functional/ShortcutLinksTest.php \Drupal\Tests\shortcut\Functional\ShortcutLinksTest
- 8.9.x core/modules/shortcut/tests/src/Functional/ShortcutLinksTest.php \Drupal\Tests\shortcut\Functional\ShortcutLinksTest
- 10 core/modules/shortcut/tests/src/Functional/ShortcutLinksTest.php \Drupal\Tests\shortcut\Functional\ShortcutLinksTest
Create, view, edit, delete, and change shortcut links.
@group shortcut
Hierarchy
- class \Drupal\Tests\BrowserTestBase extends \PHPUnit\Framework\TestCase uses \Drupal\Core\Test\FunctionalTestSetupTrait, \Drupal\Tests\UiHelperTrait, \Drupal\Core\Test\TestSetupTrait, \Drupal\Tests\block\Traits\BlockCreationTrait, \Drupal\Tests\RandomGeneratorTrait, \Drupal\Tests\node\Traits\NodeCreationTrait, \Drupal\Tests\node\Traits\ContentTypeCreationTrait, \Drupal\Tests\ConfigTestTrait, \Drupal\Tests\TestRequirementsTrait, \Drupal\Tests\user\Traits\UserCreationTrait, \Drupal\Tests\XdebugRequestTrait, \Drupal\Tests\PhpUnitCompatibilityTrait, \Drupal\TestTools\Extension\DeprecationBridge\ExpectDeprecationTrait, \Drupal\Tests\ExtensionListTestTrait
- class \Drupal\Tests\shortcut\Functional\ShortcutTestBase extends \Drupal\Tests\BrowserTestBase
- class \Drupal\Tests\shortcut\Functional\ShortcutLinksTest extends \Drupal\Tests\shortcut\Functional\ShortcutTestBase uses \Drupal\Tests\block\Functional\AssertBlockAppearsTrait, \Drupal\Tests\Traits\Core\PathAliasTestTrait
- class \Drupal\Tests\shortcut\Functional\ShortcutTestBase extends \Drupal\Tests\BrowserTestBase
Expanded class hierarchy of ShortcutLinksTest
File
-
core/
modules/ shortcut/ tests/ src/ Functional/ ShortcutLinksTest.php, line 21
Namespace
Drupal\Tests\shortcut\FunctionalView source
class ShortcutLinksTest extends ShortcutTestBase {
use AssertBlockAppearsTrait;
use PathAliasTestTrait;
/**
* {@inheritdoc}
*/
protected static $modules = [
'router_test',
'views',
'block',
];
/**
* {@inheritdoc}
*/
protected $adminUser;
/**
* {@inheritdoc}
*/
protected $defaultTheme = 'stark';
/**
* {@inheritdoc}
*/
protected function setUp() : void {
parent::setUp();
$this->adminUser = $this->drupalCreateUser([
'access toolbar',
'administer shortcuts',
'view the administration theme',
'access content overview',
'administer users',
'administer site configuration',
'administer content types',
'create article content',
'create page content',
'edit any article content',
'edit any page content',
'administer blocks',
'access shortcuts',
]);
$this->drupalPlaceBlock('page_title_block');
}
/**
* Tests that creating a shortcut works properly.
*/
public function testShortcutLinkAdd() : void {
$set = $this->set;
// Create an alias for the node so we can test aliases.
$path_alias = $this->createPathAlias('/node/' . $this->node
->id(), '/' . $this->randomMachineName(8));
// Create some paths to test.
$test_cases = [
'/',
'/admin',
'/admin/config/system/site-information',
'/node/' . $this->node
->id() . '/edit',
$path_alias->getAlias(),
'/router_test/test2',
'/router_test/test3/value',
];
$test_cases_non_access = [
'/admin',
'/admin/config/system/site-information',
];
// Test the add shortcut form UI. Test that the base field description is
// there.
$this->drupalGet('admin/config/user-interface/shortcut/manage/' . $set->id() . '/add-link');
$this->assertSession()
->pageTextContains('The location this shortcut points to.');
// Check that each new shortcut links where it should.
foreach ($test_cases as $test_path) {
$title = $this->randomMachineName();
$form_data = [
'title[0][value]' => $title,
'link[0][uri]' => $test_path,
];
$this->drupalGet('admin/config/user-interface/shortcut/manage/' . $set->id() . '/add-link');
$this->submitForm($form_data, 'Save');
$this->assertSession()
->statusCodeEquals(200);
$this->assertSession()
->pageTextContains('Added a shortcut for ' . $title . '.');
$saved_set = ShortcutSet::load($set->id());
$paths = $this->getShortcutInformation($saved_set, 'link');
$this->assertContains('internal:' . $test_path, $paths, 'Shortcut created: ' . $test_path);
if (in_array($test_path, $test_cases_non_access)) {
$this->assertSession()
->linkNotExists($title, new FormattableMarkup('Shortcut link %url not accessible on the page.', [
'%url' => $test_path,
]));
}
else {
$this->assertSession()
->linkExists($title, 0, new FormattableMarkup('Shortcut link %url found on the page.', [
'%url' => $test_path,
]));
}
}
$saved_set = ShortcutSet::load($set->id());
// Test that saving and re-loading a shortcut preserves its values.
$shortcuts = $saved_set->getShortcuts();
foreach ($shortcuts as $entity) {
// Test the node routes with parameters.
$entity->save();
$loaded = Shortcut::load($entity->id());
$this->assertEquals($entity->link->uri, $loaded->link->uri);
$this->assertEquals($entity->link->options, $loaded->link->options);
}
// Log in as non admin user, to check that access is checked when creating
// shortcuts.
$this->drupalLogin($this->shortcutUser);
$title = $this->randomMachineName();
$form_data = [
'title[0][value]' => $title,
'link[0][uri]' => '/admin',
];
$this->drupalGet('admin/config/user-interface/shortcut/manage/' . $set->id() . '/add-link');
$this->submitForm($form_data, 'Save');
$this->assertSession()
->statusCodeEquals(200);
$this->assertSession()
->pageTextContains("The path '/admin' is inaccessible.");
$form_data = [
'title[0][value]' => $title,
'link[0][uri]' => '/node',
];
$this->drupalGet('admin/config/user-interface/shortcut/manage/' . $set->id() . '/add-link');
$this->submitForm($form_data, 'Save');
$this->assertSession()
->linkExists($title, 0, 'Shortcut link found on the page.');
// Create a new shortcut set and add a link to it.
$this->drupalLogin($this->adminUser);
$edit = [
'label' => $this->randomMachineName(),
'id' => $this->randomMachineName(),
];
$this->drupalGet('admin/config/user-interface/shortcut/add-set');
$this->submitForm($edit, 'Save');
$title = $this->randomMachineName();
$form_data = [
'title[0][value]' => $title,
'link[0][uri]' => '/admin',
];
$this->drupalGet('admin/config/user-interface/shortcut/manage/' . $edit['id'] . '/add-link');
$this->submitForm($form_data, 'Save');
$this->assertSession()
->statusCodeEquals(200);
}
/**
* Tests that the "add to shortcut" and "remove from shortcut" links work.
*/
public function testShortcutQuickLink() : void {
\Drupal::service('theme_installer')->install([
'claro',
]);
$this->config('system.theme')
->set('admin', 'claro')
->save();
$this->config('node.settings')
->set('use_admin_theme', '1')
->save();
$this->container
->get('router.builder')
->rebuild();
$this->drupalLogin($this->adminUser);
$this->drupalGet('admin/config/system/cron');
// Test the "Add to shortcuts" link.
$this->clickLink('Add to Default shortcuts');
$this->assertSession()
->pageTextContains('Added a shortcut for Cron.');
$this->assertSession()
->linkExists('Cron', 0, 'Shortcut link found on page');
$this->drupalGet('admin/structure');
$this->assertSession()
->linkExists('Cron', 0, 'Shortcut link found on different page');
// Test the "Remove from shortcuts" link.
$this->clickLink('Cron');
$this->clickLink('Remove from Default shortcuts');
$this->assertSession()
->pageTextContains('The shortcut Cron has been deleted.');
$this->assertSession()
->linkNotExists('Cron', 'Shortcut link removed from page');
$this->drupalGet('admin/structure');
$this->assertSession()
->linkNotExists('Cron', 'Shortcut link removed from different page');
$this->drupalGet('admin/people');
// Test the "Add to shortcuts" link for a page generated by views.
$this->clickLink('Add to Default shortcuts');
$this->assertSession()
->pageTextContains('Added a shortcut for People.');
$this->assertShortcutQuickLink('Remove from Default shortcuts');
// Test the "Remove from shortcuts" link for a page generated by views.
$this->clickLink('Remove from Default shortcuts');
$this->assertSession()
->pageTextContains('The shortcut People has been deleted.');
$this->assertShortcutQuickLink('Add to Default shortcuts');
// Test two pages which use same route name but different route parameters.
$this->drupalGet('node/add/page');
// Add Shortcut for Basic Page.
$this->clickLink('Add to Default shortcuts');
$this->assertSession()
->pageTextContains('Added a shortcut for Create Basic page.');
// Assure that Article does not have its shortcut indicated as set.
$this->drupalGet('node/add/article');
$this->assertSession()
->elementNotExists('xpath', "//a[normalize-space()='Remove from Default shortcuts']");
// Add Shortcut for Article.
$this->clickLink('Add to Default shortcuts');
$this->assertSession()
->pageTextContains('Added a shortcut for Create Article.');
$this->config('system.theme')
->set('default', 'claro')
->save();
$this->drupalGet('node/' . $this->node
->id());
$title = $this->node
->getTitle();
// Test the "Add to shortcuts" link for node view route.
$this->clickLink('Add to Default shortcuts');
$this->assertSession()
->pageTextContains("Added a shortcut for {$title}.");
$this->assertShortcutQuickLink('Remove from Default shortcuts');
// Test the "Remove from shortcuts" link for node view route.
$this->clickLink('Remove from Default shortcuts');
$this->assertSession()
->pageTextContains("The shortcut {$title} has been deleted.");
$this->assertShortcutQuickLink('Add to Default shortcuts');
\Drupal::service('module_installer')->install([
'block_content',
]);
$this->adminUser
->addRole($this->drupalCreateRole([
'administer block types',
]))
->save();
BlockContentType::create([
'id' => 'basic',
'label' => 'Basic block',
'revision' => FALSE,
])->save();
// Test page with HTML tags in title.
$this->drupalGet('admin/structure/block-content/manage/basic');
$page_title = "Edit Basic block block type";
$this->assertSession()
->pageTextContains($page_title);
// Add shortcut to this page.
$this->clickLink('Add to Default shortcuts');
$this->assertSession()
->pageTextContains("Added a shortcut for {$page_title}.");
}
/**
* Tests that shortcut links can be renamed.
*/
public function testShortcutLinkRename() : void {
$set = $this->set;
// Attempt to rename shortcut link.
$new_link_name = $this->randomMachineName();
$shortcuts = $set->getShortcuts();
$shortcut = reset($shortcuts);
$this->drupalGet('admin/config/user-interface/shortcut/link/' . $shortcut->id());
$this->submitForm([
'title[0][value]' => $new_link_name,
], 'Save');
$saved_set = ShortcutSet::load($set->id());
$titles = $this->getShortcutInformation($saved_set, 'title');
$this->assertContains($new_link_name, $titles, 'Shortcut renamed: ' . $new_link_name);
$this->assertSession()
->linkExists($new_link_name, 0, 'Renamed shortcut link appears on the page.');
$this->assertSession()
->pageTextContains('The shortcut ' . $new_link_name . ' has been updated.');
}
/**
* Tests that changing the path of a shortcut link works.
*/
public function testShortcutLinkChangePath() : void {
$set = $this->set;
// Tests changing a shortcut path.
$new_link_path = '/admin/config';
$shortcuts = $set->getShortcuts();
$shortcut = reset($shortcuts);
$this->drupalGet('admin/config/user-interface/shortcut/link/' . $shortcut->id());
$this->submitForm([
'title[0][value]' => $shortcut->getTitle(),
'link[0][uri]' => $new_link_path,
], 'Save');
$saved_set = ShortcutSet::load($set->id());
$paths = $this->getShortcutInformation($saved_set, 'link');
$this->assertContains('internal:' . $new_link_path, $paths, 'Shortcut path changed: ' . $new_link_path);
$this->assertSession()
->linkByHrefExists($new_link_path, 0, 'Shortcut with new path appears on the page.');
$this->assertSession()
->pageTextContains('The shortcut ' . $shortcut->getTitle() . ' has been updated.');
}
/**
* Tests that changing the route of a shortcut link works.
*/
public function testShortcutLinkChangeRoute() : void {
$this->drupalLogin($this->adminUser);
$this->drupalGet('admin/content');
$this->assertSession()
->statusCodeEquals(200);
// Disable the view.
View::load('content')->disable()
->save();
/** @var \Drupal\Core\Routing\RouteBuilderInterface $router_builder */
$router_builder = \Drupal::service('router.builder');
$router_builder->rebuildIfNeeded();
$this->drupalGet('admin/content');
$this->assertSession()
->statusCodeEquals(200);
}
/**
* Tests deleting a shortcut link.
*/
public function testShortcutLinkDelete() : void {
$set = $this->set;
$shortcuts = $set->getShortcuts();
$shortcut = reset($shortcuts);
$this->drupalGet('admin/config/user-interface/shortcut/link/' . $shortcut->id() . '/delete');
$this->submitForm([], 'Delete');
$saved_set = ShortcutSet::load($set->id());
$ids = $this->getShortcutInformation($saved_set, 'id');
$this->assertNotContains($shortcut->id(), $ids, 'Successfully deleted a shortcut.');
// Delete all the remaining shortcut links.
$storage = \Drupal::entityTypeManager()->getStorage('shortcut');
$storage->delete($storage->loadMultiple(array_filter($ids)));
// Get the front page to check that no exceptions occur.
$this->drupalGet('');
}
/**
* Tests that the add shortcut link is not displayed for 404/403 errors.
*
* Tests that the "Add to shortcuts" link is not displayed on a page not
* found or a page the user does not have access to.
*/
public function testNoShortcutLink() : void {
// Change to a theme that displays shortcuts.
\Drupal::service('theme_installer')->install([
'claro',
]);
$this->config('system.theme')
->set('default', 'claro')
->save();
$this->drupalGet('page-that-does-not-exist');
// Test that add to shortcuts link is not shown on a page not found.
$this->assertSession()
->elementNotExists('xpath', '//a[contains(@class, "shortcut-action--add")]');
// The user does not have access to this path.
$this->drupalGet('admin/modules');
$this->assertSession()
->elementNotExists('xpath', '//a[contains(@class, "shortcut-action--add")]');
// Verify that the testing mechanism works by verifying the shortcut link
// appears on admin/content.
$this->drupalGet('admin/content');
$this->assertSession()
->elementExists('xpath', '//a[contains(@class, "shortcut-action--remove")]');
// Verify that the shortcut link appears on routing only pages.
$this->drupalGet('router_test/test2');
$this->assertSession()
->elementExists('xpath', '//a[contains(@class, "shortcut-action--add")]');
}
/**
* Tests that the 'access shortcuts' permissions works properly.
*/
public function testAccessShortcutsPermission() : void {
// Change to a theme that displays shortcuts.
\Drupal::service('theme_installer')->install([
'claro',
]);
$this->config('system.theme')
->set('default', 'claro')
->save();
// Add cron to the default shortcut set.
$this->drupalLogin($this->adminUser);
$this->drupalGet('admin/config/system/cron');
$this->clickLink('Add to Default shortcuts');
// Verify that users without the 'access shortcuts' permission can't see the
// shortcuts.
$this->drupalLogin($this->drupalCreateUser([
'access toolbar',
]));
$this->assertSession()
->linkNotExists('Shortcuts', 'Shortcut link not found on page.');
// Verify that users without the 'administer site configuration' permission
// can't see the cron shortcuts but can see shortcuts.
$this->drupalLogin($this->drupalCreateUser([
'access toolbar',
'access shortcuts',
]));
$this->assertSession()
->linkExists('Shortcuts');
$this->assertSession()
->linkNotExists('Cron', 'Cron shortcut link not found on page.');
// Verify that users with the 'access shortcuts' permission can see the
// shortcuts.
$this->drupalLogin($this->drupalCreateUser([
'access toolbar',
'access shortcuts',
'administer site configuration',
]));
$this->clickLink('Shortcuts');
$this->assertSession()
->linkExists('Cron', 0, 'Cron shortcut link found on page.');
$this->verifyAccessShortcutsPermissionForEditPages();
}
/**
* Tests the shortcuts are correctly ordered by weight in the toolbar.
*/
public function testShortcutLinkOrder() : void {
// Ensure to give permissions to access the shortcuts.
$this->drupalLogin($this->drupalCreateUser([
'access toolbar',
'access shortcuts',
'access content overview',
'administer content types',
]));
$this->drupalGet(Url::fromRoute('<front>'));
$shortcuts = $this->cssSelect('#toolbar-item-shortcuts-tray .toolbar-menu a');
$this->assertEquals('Add content', $shortcuts[0]->getText());
$this->assertEquals('All content', $shortcuts[1]->getText());
foreach ($this->set
->getShortcuts() as $shortcut) {
$shortcut->setWeight($shortcut->getWeight() * -1)
->save();
}
$this->drupalGet(Url::fromRoute('<front>'));
$shortcuts = $this->cssSelect('#toolbar-item-shortcuts-tray .toolbar-menu a');
$this->assertEquals('All content', $shortcuts[0]->getText());
$this->assertEquals('Add content', $shortcuts[1]->getText());
}
/**
* Tests the 'access shortcuts' permission for shortcut set administration.
*/
private function verifyAccessShortcutsPermissionForEditPages() : void {
// Create a user with customize links and switch sets permissions but
// without the 'access shortcuts' permission.
$test_permissions = [
'customize shortcut links',
'switch shortcut sets',
];
$no_access_user = $this->drupalCreateUser($test_permissions);
$this->drupalLogin($no_access_user);
// Verify that set administration pages are inaccessible without the
// 'access shortcuts' permission.
$this->drupalGet('admin/config/user-interface/shortcut/manage/default/customize');
$this->assertSession()
->statusCodeEquals(403);
$this->drupalGet('admin/config/user-interface/shortcut/manage/default');
$this->assertSession()
->statusCodeEquals(403);
$this->drupalGet('user/' . $no_access_user->id() . '/shortcuts');
$this->assertSession()
->statusCodeEquals(403);
}
/**
* Tests the 'access shortcuts' permission with the shortcut block.
*/
public function testShortcutBlockAccess() : void {
// Creates a block instance and place in a region through api.
$block = $this->drupalPlaceBlock('shortcuts');
// Verify that users with the 'access shortcuts' permission can see the
// shortcut block.
$this->drupalLogin($this->shortcutUser);
$this->drupalGet('');
$this->assertBlockAppears($block);
$this->drupalLogout();
// Verify that users without the 'access shortcuts' permission can see the
// shortcut block.
$this->drupalLogin($this->drupalCreateUser([]));
$this->drupalGet('');
$this->assertNoBlockAppears($block);
}
/**
* Passes if a shortcut quick link with the specified label is found.
*
* An optional link index may be passed.
*
* @param string $label
* Text between the anchor tags.
* @param int $index
* Link position counting from zero.
* @param string $message
* (optional) A message to display with the assertion. Do not translate
* messages: use new FormattableMarkup() to embed variables in the message text, not
* t(). If left blank, a default message will be displayed.
*
* @internal
*/
protected function assertShortcutQuickLink(string $label, int $index = 0, string $message = '') : void {
$links = $this->xpath('//a[normalize-space()=:label]', [
':label' => $label,
]);
$message = $message ? $message : (string) new FormattableMarkup('Shortcut quick link with label %label found.', [
'%label' => $label,
]);
$this->assertArrayHasKey($index, $links, $message);
}
}
Members
Title Sort descending | Modifiers | Object type | Summary | Member alias | Overriden Title | Overrides |
---|---|---|---|---|---|---|
AssertBlockAppearsTrait::assertBlockAppears | protected | function | Checks to see whether a block appears on the page. | |||
AssertBlockAppearsTrait::assertNoBlockAppears | protected | function | Checks to see whether a block does not appears on the page. | |||
BlockCreationTrait::placeBlock | protected | function | Creates a block instance based on default settings. | Aliased as: drupalPlaceBlock | ||
BrowserHtmlDebugTrait::$htmlOutputBaseUrl | protected | property | The Base URI to use for links to the output files. | |||
BrowserHtmlDebugTrait::$htmlOutputClassName | protected | property | Class name for HTML output logging. | |||
BrowserHtmlDebugTrait::$htmlOutputCounter | protected | property | Counter for HTML output logging. | |||
BrowserHtmlDebugTrait::$htmlOutputCounterStorage | protected | property | Counter storage for HTML output logging. | |||
BrowserHtmlDebugTrait::$htmlOutputDirectory | protected | property | Directory name for HTML output logging. | |||
BrowserHtmlDebugTrait::$htmlOutputEnabled | protected | property | HTML output enabled. | |||
BrowserHtmlDebugTrait::$htmlOutputTestId | protected | property | HTML output test ID. | |||
BrowserHtmlDebugTrait::formatHtmlOutputHeaders | protected | function | Formats HTTP headers as string for HTML output logging. | |||
BrowserHtmlDebugTrait::getHtmlOutputHeaders | protected | function | Returns headers in HTML output format. | 1 | ||
BrowserHtmlDebugTrait::getResponseLogHandler | protected | function | Provides a Guzzle middleware handler to log every response received. | |||
BrowserHtmlDebugTrait::htmlOutput | protected | function | Logs a HTML output message in a text file. | |||
BrowserHtmlDebugTrait::initBrowserOutputFile | protected | function | Creates the directory to store browser output. | |||
BrowserTestBase::$baseUrl | protected | property | The base URL. | |||
BrowserTestBase::$configImporter | protected | property | The config importer that can be used in a test. | |||
BrowserTestBase::$customTranslations | protected | property | An array of custom translations suitable for SettingsEditor::rewrite(). | |||
BrowserTestBase::$mink | protected | property | Mink session manager. | |||
BrowserTestBase::$minkDefaultDriverArgs | protected | property | Mink default driver params. | |||
BrowserTestBase::$minkDefaultDriverClass | protected | property | Mink class for the default driver to use. | 1 | ||
BrowserTestBase::$originalContainer | protected | property | The original container. | |||
BrowserTestBase::$originalShutdownCallbacks | protected | property | The original array of shutdown function callbacks. | |||
BrowserTestBase::$profile | protected | property | The profile to install as a basis for testing. | 41 | ||
BrowserTestBase::$timeLimit | protected | property | Time limit in seconds for the test. | |||
BrowserTestBase::$translationFilesDirectory | protected | property | The translation file directory for the test environment. | |||
BrowserTestBase::cleanupEnvironment | protected | function | Clean up the test environment. | |||
BrowserTestBase::config | protected | function | Configuration accessor for tests. Returns non-overridden configuration. | |||
BrowserTestBase::filePreDeleteCallback | public static | function | Ensures test files are deletable. | |||
BrowserTestBase::getDefaultDriverInstance | protected | function | Gets an instance of the default Mink driver. | |||
BrowserTestBase::getDrupalSettings | protected | function | Gets the JavaScript drupalSettings variable for the currently-loaded page. | 1 | ||
BrowserTestBase::getHttpClient | protected | function | Obtain the HTTP client for the system under test. | |||
BrowserTestBase::getMinkDriverArgs | protected | function | Gets the Mink driver args from an environment variable. | 1 | ||
BrowserTestBase::getOptions | protected | function | Helper function to get the options of select field. | |||
BrowserTestBase::getSession | public | function | Returns Mink session. | |||
BrowserTestBase::getSessionCookies | protected | function | Get session cookies from current session. | |||
BrowserTestBase::getTestMethodCaller | protected | function | Retrieves the current calling line in the class under test. | Overrides BrowserHtmlDebugTrait::getTestMethodCaller | ||
BrowserTestBase::initFrontPage | protected | function | Visits the front page when initializing Mink. | 3 | ||
BrowserTestBase::initMink | protected | function | Initializes Mink sessions. | 1 | ||
BrowserTestBase::installDrupal | public | function | Installs Drupal into the test site. | 2 | ||
BrowserTestBase::registerSessions | protected | function | Registers additional Mink sessions. | |||
BrowserTestBase::setUpAppRoot | protected | function | Sets up the root application path. | |||
BrowserTestBase::setUpBeforeClass | public static | function | 1 | |||
BrowserTestBase::tearDown | protected | function | 3 | |||
BrowserTestBase::translatePostValues | protected | function | Transforms a nested array into a flat array suitable for submitForm(). | |||
BrowserTestBase::xpath | protected | function | Performs an xpath search on the contents of the internal browser. | |||
BrowserTestBase::__construct | public | function | 1 | |||
BrowserTestBase::__sleep | public | function | Prevents serializing any properties. | |||
ConfigTestTrait::configImporter | protected | function | Returns a ConfigImporter object to import test configuration. | |||
ConfigTestTrait::copyConfig | protected | function | Copies configuration objects from source storage to target storage. | |||
ContentTypeCreationTrait::createContentType | protected | function | Creates a custom content type based on default settings. | Aliased as: drupalCreateContentType | 1 | |
ExpectDeprecationTrait::expectDeprecation | public | function | Adds an expected deprecation. | |||
ExpectDeprecationTrait::getCallableName | private static | function | Returns a callable as a string suitable for inclusion in a message. | |||
ExpectDeprecationTrait::setUpErrorHandler | public | function | Sets up the test error handler. | |||
ExpectDeprecationTrait::tearDownErrorHandler | public | function | Tears down the test error handler. | |||
ExtensionListTestTrait::getModulePath | protected | function | Gets the path for the specified module. | |||
ExtensionListTestTrait::getThemePath | protected | function | Gets the path for the specified theme. | |||
FunctionalTestSetupTrait::$apcuEnsureUniquePrefix | protected | property | The flag to set 'apcu_ensure_unique_prefix' setting. | 1 | ||
FunctionalTestSetupTrait::$classLoader | protected | property | The class loader to use for installation and initialization of setup. | |||
FunctionalTestSetupTrait::$rootUser | protected | property | The "#1" admin user. | |||
FunctionalTestSetupTrait::$usesSuperUserAccessPolicy | protected | property | Set to TRUE to make user 1 a super user. | 8 | ||
FunctionalTestSetupTrait::doInstall | protected | function | Execute the non-interactive installer. | 1 | ||
FunctionalTestSetupTrait::getDatabaseTypes | protected | function | Returns all supported database driver installer objects. | |||
FunctionalTestSetupTrait::initConfig | protected | function | Initialize various configurations post-installation. | 1 | ||
FunctionalTestSetupTrait::initKernel | protected | function | Initializes the kernel after installation. | |||
FunctionalTestSetupTrait::initSettings | protected | function | Initialize settings created during install. | |||
FunctionalTestSetupTrait::initUserSession | protected | function | Initializes user 1 for the site to be installed. | |||
FunctionalTestSetupTrait::installDefaultThemeFromClassProperty | protected | function | Installs the default theme defined by `static::$defaultTheme` when needed. | 1 | ||
FunctionalTestSetupTrait::installModulesFromClassProperty | protected | function | Install modules defined by `static::$modules`. | 1 | ||
FunctionalTestSetupTrait::installParameters | protected | function | Returns the parameters that will be used when the test installs Drupal. | 8 | ||
FunctionalTestSetupTrait::prepareEnvironment | protected | function | Prepares the current environment for running the test. | 29 | ||
FunctionalTestSetupTrait::prepareRequestForGenerator | protected | function | Creates a mock request and sets it on the generator. | |||
FunctionalTestSetupTrait::prepareSettings | protected | function | Prepares site settings and services before installation. | 4 | ||
FunctionalTestSetupTrait::rebuildAll | protected | function | Resets and rebuilds the environment after setup. | |||
FunctionalTestSetupTrait::rebuildContainer | protected | function | Rebuilds \Drupal::getContainer(). | |||
FunctionalTestSetupTrait::resetAll | protected | function | Resets all data structures after having enabled new modules. | |||
FunctionalTestSetupTrait::setContainerParameter | protected | function | Changes parameters in the services.yml file. | |||
FunctionalTestSetupTrait::setupBaseUrl | protected | function | Sets up the base URL based upon the environment variable. | |||
FunctionalTestSetupTrait::writeSettings | protected | function | Rewrites the settings.php file of the test site. | 1 | ||
NodeCreationTrait::createNode | protected | function | Creates a node based on default settings. | Aliased as: drupalCreateNode | ||
NodeCreationTrait::getNodeByTitle | public | function | Get a node from the database based on its title. | Aliased as: drupalGetNodeByTitle | ||
PathAliasTestTrait::assertPathAliasExists | protected | function | Asserts that a path alias exists in the storage. | |||
PathAliasTestTrait::assertPathAliasNotExists | protected | function | Asserts that a path alias does not exist in the storage. | |||
PathAliasTestTrait::createPathAlias | protected | function | Creates a new path alias. | |||
PathAliasTestTrait::loadPathAliasByConditions | protected | function | Gets the first result from a 'load by properties' storage call. | |||
RandomGeneratorTrait::getRandomGenerator | protected | function | Gets the random generator for the utility methods. | |||
RandomGeneratorTrait::randomMachineName | protected | function | Generates a unique random string containing letters and numbers. | |||
RandomGeneratorTrait::randomObject | public | function | Generates a random PHP object. | |||
RandomGeneratorTrait::randomString | public | function | Generates a pseudo-random string of ASCII characters of codes 32 to 126. | |||
RefreshVariablesTrait::refreshVariables | protected | function | Refreshes in-memory configuration and state information. | 2 | ||
SessionTestTrait::$sessionName | protected | property | The name of the session cookie. | |||
SessionTestTrait::generateSessionName | protected | function | Generates a session cookie name. | |||
SessionTestTrait::getSessionName | protected | function | Returns the session name in use on the child site. | |||
ShortcutLinksTest::$adminUser | protected | property | User with permission to administer shortcuts. | Overrides ShortcutTestBase::$adminUser | ||
ShortcutLinksTest::$defaultTheme | protected | property | The theme to install as the default for testing. | Overrides BrowserTestBase::$defaultTheme | ||
ShortcutLinksTest::$modules | protected static | property | Modules to install. | Overrides ShortcutTestBase::$modules | ||
ShortcutLinksTest::assertShortcutQuickLink | protected | function | Passes if a shortcut quick link with the specified label is found. | |||
ShortcutLinksTest::setUp | protected | function | Overrides ShortcutTestBase::setUp | |||
ShortcutLinksTest::testAccessShortcutsPermission | public | function | Tests that the 'access shortcuts' permissions works properly. | |||
ShortcutLinksTest::testNoShortcutLink | public | function | Tests that the add shortcut link is not displayed for 404/403 errors. | |||
ShortcutLinksTest::testShortcutBlockAccess | public | function | Tests the 'access shortcuts' permission with the shortcut block. | |||
ShortcutLinksTest::testShortcutLinkAdd | public | function | Tests that creating a shortcut works properly. | |||
ShortcutLinksTest::testShortcutLinkChangePath | public | function | Tests that changing the path of a shortcut link works. | |||
ShortcutLinksTest::testShortcutLinkChangeRoute | public | function | Tests that changing the route of a shortcut link works. | |||
ShortcutLinksTest::testShortcutLinkDelete | public | function | Tests deleting a shortcut link. | |||
ShortcutLinksTest::testShortcutLinkOrder | public | function | Tests the shortcuts are correctly ordered by weight in the toolbar. | |||
ShortcutLinksTest::testShortcutLinkRename | public | function | Tests that shortcut links can be renamed. | |||
ShortcutLinksTest::testShortcutQuickLink | public | function | Tests that the "add to shortcut" and "remove from shortcut" links work. | |||
ShortcutLinksTest::verifyAccessShortcutsPermissionForEditPages | private | function | Tests the 'access shortcuts' permission for shortcut set administration. | |||
ShortcutTestBase::$node | protected | property | Generic node used for testing. | |||
ShortcutTestBase::$set | protected | property | Site-wide default shortcut set. | |||
ShortcutTestBase::$shortcutUser | protected | property | User with permission to use shortcuts, but not administer them. | |||
ShortcutTestBase::generateShortcutSet | public | function | Creates a generic shortcut set. | |||
ShortcutTestBase::getShortcutInformation | public | function | Extracts information from shortcut set links. | |||
StorageCopyTrait::replaceStorageContents | protected static | function | Copy the configuration from one storage to another and remove stale items. | |||
TestRequirementsTrait::getDrupalRoot | protected static | function | Returns the Drupal root directory. | |||
TestSetupTrait::$configSchemaCheckerExclusions | protected static | property | An array of config object names that are excluded from schema checking. | 3 | ||
TestSetupTrait::$container | protected | property | The dependency injection container used in the test. | |||
TestSetupTrait::$databasePrefix | protected | property | The database prefix of this test run. | |||
TestSetupTrait::$kernel | protected | property | The DrupalKernel instance used in the test. | |||
TestSetupTrait::$originalSite | protected | property | The site directory of the original parent site. | |||
TestSetupTrait::$privateFilesDirectory | protected | property | The private file directory for the test environment. | |||
TestSetupTrait::$publicFilesDirectory | protected | property | The public file directory for the test environment. | |||
TestSetupTrait::$root | protected | property | The app root. | |||
TestSetupTrait::$siteDirectory | protected | property | The site directory of this test run. | |||
TestSetupTrait::$strictConfigSchema | protected | property | Set to TRUE to strict check all configuration saved. | 4 | ||
TestSetupTrait::$tempFilesDirectory | protected | property | The temporary file directory for the test environment. | |||
TestSetupTrait::$testId | protected | property | The test run ID. | |||
TestSetupTrait::changeDatabasePrefix | protected | function | Changes the database connection to the prefixed one. | |||
TestSetupTrait::getConfigSchemaExclusions | protected | function | Gets the config schema exclusions for this test. | |||
TestSetupTrait::prepareDatabasePrefix | protected | function | Generates a database prefix for running tests. | 1 | ||
UiHelperTrait::$loggedInUser | protected | property | The current user logged in using the Mink controlled browser. | |||
UiHelperTrait::$maximumMetaRefreshCount | protected | property | The number of meta refresh redirects to follow, or NULL if unlimited. | |||
UiHelperTrait::$metaRefreshCount | protected | property | The number of meta refresh redirects followed during ::drupalGet(). | |||
UiHelperTrait::$useOneTimeLoginLinks | protected | property | Use one-time login links instead of submitting the login form. | 3 | ||
UiHelperTrait::assertSession | public | function | Returns WebAssert object. | 1 | ||
UiHelperTrait::buildUrl | protected | function | Builds an absolute URL from a system path or a URL object. | |||
UiHelperTrait::checkForMetaRefresh | protected | function | Checks for meta refresh tag and if found call drupalGet() recursively. | |||
UiHelperTrait::click | protected | function | Clicks the element with the given CSS selector. | |||
UiHelperTrait::clickLink | protected | function | Follows a link by complete name. | |||
UiHelperTrait::cssSelect | protected | function | Searches elements using a CSS selector in the raw content. | |||
UiHelperTrait::cssSelectToXpath | protected | function | Translates a CSS expression to its XPath equivalent. | |||
UiHelperTrait::drupalGet | protected | function | Retrieves a Drupal path or an absolute path. | 3 | ||
UiHelperTrait::drupalLogin | protected | function | Logs in a user using the Mink controlled browser. | |||
UiHelperTrait::drupalLogout | protected | function | Logs a user out of the Mink controlled browser and confirms. | |||
UiHelperTrait::drupalResetSession | protected | function | Resets the current active session back to Anonymous session. | |||
UiHelperTrait::drupalUserIsLoggedIn | protected | function | Returns whether a given user account is logged in. | |||
UiHelperTrait::getAbsoluteUrl | protected | function | Takes a path and returns an absolute path. | |||
UiHelperTrait::getTextContent | protected | function | Retrieves the plain-text content from the current page. | |||
UiHelperTrait::getUrl | protected | function | Get the current URL from the browser. | |||
UiHelperTrait::isTestUsingGuzzleClient | protected | function | Determines if test is using DrupalTestBrowser. | |||
UiHelperTrait::prepareRequest | protected | function | Prepare for a request to testing site. | 1 | ||
UiHelperTrait::submitForm | protected | function | Fills and submits a form. | |||
UserCreationTrait::checkPermissions | protected | function | Checks whether a given list of permission names is valid. | |||
UserCreationTrait::createAdminRole | protected | function | Creates an administrative role. | |||
UserCreationTrait::createRole | protected | function | Creates a role with specified permissions. | Aliased as: drupalCreateRole | ||
UserCreationTrait::createUser | protected | function | Create a user with a given set of permissions. | Aliased as: drupalCreateUser | ||
UserCreationTrait::grantPermissions | protected | function | Grant permissions to a user role. | |||
UserCreationTrait::setCurrentUser | protected | function | Switch the current logged in user. | |||
UserCreationTrait::setUpCurrentUser | protected | function | Creates a random user account and sets it as current user. | |||
XdebugRequestTrait::extractCookiesFromRequest | protected | function | Adds xdebug cookies, from request setup. |
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.