class ShortcutLinksTest

Same name in other branches
  1. 9 core/modules/shortcut/tests/src/Functional/ShortcutLinksTest.php \Drupal\Tests\shortcut\Functional\ShortcutLinksTest
  2. 8.9.x core/modules/shortcut/tests/src/Functional/ShortcutLinksTest.php \Drupal\Tests\shortcut\Functional\ShortcutLinksTest
  3. 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

Expanded class hierarchy of ShortcutLinksTest

File

core/modules/shortcut/tests/src/Functional/ShortcutLinksTest.php, line 21

Namespace

Drupal\Tests\shortcut\Functional
View 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 &#039;apcu_ensure_unique_prefix&#039; setting. 1
FunctionalTestSetupTrait::$classLoader protected property The class loader to use for installation and initialization of setup.
FunctionalTestSetupTrait::$rootUser protected property The &quot;#1&quot; 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 &#039;load by properties&#039; 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 &#039;access shortcuts&#039; 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 &#039;access shortcuts&#039; 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 &quot;add to shortcut&quot; and &quot;remove from shortcut&quot; links work.
ShortcutLinksTest::verifyAccessShortcutsPermissionForEditPages private function Tests the &#039;access shortcuts&#039; 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.