diff --git a/navigation_extra_tools.post_update.php b/navigation_extra_tools.post_update.php index ed567693f988e459efb7055b65beea5fd59ba839..dd6018591ab3f2b80d0eb90b6c4d88d074d87abb 100644 --- a/navigation_extra_tools.post_update.php +++ b/navigation_extra_tools.post_update.php @@ -8,12 +8,13 @@ use Drupal\user\Entity\Role; /** - * Adds the 'access navigation extra tools' permission for relevant roles. + * Adds cache flushing and cron permissions for relevant roles. */ function navigation_extra_tools_post_update_update_permissions(): void { foreach (Role::loadMultiple() as $role) { if ($role->hasPermission('administer site configuration')) { - $role->grantPermission('access navigation extra tools')->save(); + $role->grantPermission('access navigation extra tools cache flushing')->save(); + $role->grantPermission('access navigation extra tools cron')->save(); } } } diff --git a/navigation_extra_tools.routing.yml b/navigation_extra_tools.routing.yml index 194abbb22145ba5c596b626922745256a6323c3e..6f8f7eef117d502b8d0a75cec069ed1a72fc4eca 100644 --- a/navigation_extra_tools.routing.yml +++ b/navigation_extra_tools.routing.yml @@ -4,7 +4,7 @@ navigation_extra_tools.overview: _controller: '\Drupal\system\Controller\SystemController::systemAdminMenuBlockPage' _title: 'Tools' requirements: - _permission: 'access navigation extra tools cache flushing+access navigation extra tools cron' + _permission: 'access navigation' navigation_extra_tools.flush: path: '/admin/flush' diff --git a/tests/src/Functional/NavigationExtraToolsDevelTest.php b/tests/src/Functional/NavigationExtraToolsDevelTest.php new file mode 100644 index 0000000000000000000000000000000000000000..c467d239837ac927e8f0b16ba622a02f7d57c756 --- /dev/null +++ b/tests/src/Functional/NavigationExtraToolsDevelTest.php @@ -0,0 +1,69 @@ +<?php + +declare(strict_types=1); + +namespace Drupal\Tests\navigation_extra_tools\Functional; + +use Drupal\Tests\BrowserTestBase; +use Drupal\user\UserInterface; + +// cSpell:ignore toolshelp + +/** + * Test description. + * + * @group navigation_extra_tools + */ +final class NavigationExtraToolsDevelTest extends BrowserTestBase { + + /** + * {@inheritdoc} + */ + protected $defaultTheme = 'stark'; + + /** + * {@inheritdoc} + */ + protected static $modules = [ + 'navigation_extra_tools', + 'devel', + ]; + + /** + * A test user with permission to access the administrative toolbar. + * + * @var \Drupal\user\UserInterface + */ + protected UserInterface $adminUser; + + /** + * {@inheritdoc} + */ + protected function setUp(): void { + parent::setUp(); + // Create and log in an administrative user. + $this->adminUser = $this->drupalCreateUser([ + 'access navigation', + 'access administration pages', + 'administer site configuration', + ]); + $this->drupalLogin($this->adminUser); + } + + /** + * Test the Development menu. + */ + public function testDevelopmentMenu(): void { + // Test that Development menu now present under Tools. + $this->assertSession()->elementExists('xpath', '//li[@id="navigation-link-navigation-extra-toolshelp"]/div/ul/li[contains(@class, "toolbar-menu__item--level-1")]/button[contains(@class, "toolbar-button")]/span[text() = "Development"]'); + // Test that "Devel settings" exists as level 2 menu under Tools. + $this->assertSession()->elementExists('xpath', '//li[@id="navigation-link-navigation-extra-toolshelp"]/div/ul/li/ul/li[contains(@class, "toolbar-menu__item--level-2")]/a[contains(@class, "toolbar-menu__link--2") and text() = "Devel settings"]'); + // Test that "Config editor" exists as level 2 menu under Tools. + $this->assertSession()->elementExists('xpath', '//li[@id="navigation-link-navigation-extra-toolshelp"]/div/ul/li/ul/li[contains(@class, "toolbar-menu__item--level-2")]/a[contains(@class, "toolbar-menu__link--2") and text() = "Config editor"]'); + // Test that "Reinstall modules" exists as level 2 menu under Tools. + $this->assertSession()->elementExists('xpath', '//li[@id="navigation-link-navigation-extra-toolshelp"]/div/ul/li/ul/li[contains(@class, "toolbar-menu__item--level-2")]/a[contains(@class, "toolbar-menu__link--2") and text() = "Reinstall modules"]'); + // Test that "Rebuild menu" exists as level 2 menu under Tools. + $this->assertSession()->elementExists('xpath', '//li[@id="navigation-link-navigation-extra-toolshelp"]/div/ul/li/ul/li[contains(@class, "toolbar-menu__item--level-2")]/a[contains(@class, "toolbar-menu__link--2") and text() = "Rebuild menu"]'); + } + +} diff --git a/tests/src/Functional/NavigationExtraToolsMenuTest.php b/tests/src/Functional/NavigationExtraToolsMenuTest.php index 77ffe544dd0940cecdd7ceb35240e11b7b791b24..48a80016760a6e93484ccb475edf80b03322a425 100644 --- a/tests/src/Functional/NavigationExtraToolsMenuTest.php +++ b/tests/src/Functional/NavigationExtraToolsMenuTest.php @@ -25,7 +25,6 @@ final class NavigationExtraToolsMenuTest extends BrowserTestBase { * {@inheritdoc} */ protected static $modules = [ - 'navigation', 'navigation_extra_tools', ]; @@ -45,7 +44,6 @@ final class NavigationExtraToolsMenuTest extends BrowserTestBase { $this->adminUser = $this->drupalCreateUser([ 'access navigation', 'access administration pages', - 'administer site configuration', 'administer software updates', 'access navigation extra tools cache flushing', 'access navigation extra tools cron', @@ -177,22 +175,9 @@ final class NavigationExtraToolsMenuTest extends BrowserTestBase { /** * Test the Development menu. */ - public function testDevelopmentMenu(): void { + public function testDevelopmentMenuNotEnabled(): void { // Check Development menu not shown when devel not enabled. $this->assertSession()->elementNotExists('xpath', '//li[@id="navigation-link-navigation-extra-toolshelp"]/div/ul/li[contains(@class, "toolbar-menu__item--level-1")]/button[contains(@class, "toolbar-button")]/span[text() = "Development"]'); - $success = $this->container->get('module_installer')->install(['devel'], TRUE); - $this->assertTrue($success, 'Enabled module devel'); - $this->drupalGet('admin'); - // Test that Development menu now present under Tools. - $this->assertSession()->elementExists('xpath', '//li[@id="navigation-link-navigation-extra-toolshelp"]/div/ul/li[contains(@class, "toolbar-menu__item--level-1")]/button[contains(@class, "toolbar-button")]/span[text() = "Development"]'); - // Test that "Devel settings" exists as level 2 menu under Tools. - $this->assertSession()->elementExists('xpath', '//li[@id="navigation-link-navigation-extra-toolshelp"]/div/ul/li/ul/li[contains(@class, "toolbar-menu__item--level-2")]/a[contains(@class, "toolbar-menu__link--2") and text() = "Devel settings"]'); - // Test that "Config editor" exists as level 2 menu under Tools. - $this->assertSession()->elementExists('xpath', '//li[@id="navigation-link-navigation-extra-toolshelp"]/div/ul/li/ul/li[contains(@class, "toolbar-menu__item--level-2")]/a[contains(@class, "toolbar-menu__link--2") and text() = "Config editor"]'); - // Test that "Reinstall modules" exists as level 2 menu under Tools. - $this->assertSession()->elementExists('xpath', '//li[@id="navigation-link-navigation-extra-toolshelp"]/div/ul/li/ul/li[contains(@class, "toolbar-menu__item--level-2")]/a[contains(@class, "toolbar-menu__link--2") and text() = "Reinstall modules"]'); - // Test that "Rebuild menu" exists as level 2 menu under Tools. - $this->assertSession()->elementExists('xpath', '//li[@id="navigation-link-navigation-extra-toolshelp"]/div/ul/li/ul/li[contains(@class, "toolbar-menu__item--level-2")]/a[contains(@class, "toolbar-menu__link--2") and text() = "Rebuild menu"]'); } }