diff --git a/core/modules/navigation/src/NavigationContentLinks.php b/core/modules/navigation/src/NavigationContentLinks.php index 8093b417b597eca5a5270d2dbaf2c85f96ecd103..6b099afb6da85a1314405ad6e337c22714d7079b 100644 --- a/core/modules/navigation/src/NavigationContentLinks.php +++ b/core/modules/navigation/src/NavigationContentLinks.php @@ -60,7 +60,7 @@ public function addMenuLinks(array &$links): void { 'weight' => -10, ], 'navigation.content' => [ - 'route_name' => 'view.content.page_1', + 'route_name' => 'system.admin_content', 'title' => $this->t('Content'), ], 'navigation.files' => [ @@ -68,11 +68,11 @@ public function addMenuLinks(array &$links): void { 'title' => $this->t('Files'), ], 'navigation.media' => [ - 'route_name' => 'view.media.media_page_list', + 'route_name' => 'entity.media.collection', 'title' => $this->t('Media'), ], 'navigation.blocks' => [ - 'route_name' => 'view.block_content.page_1', + 'route_name' => 'entity.block_content.collection', 'title' => $this->t('Blocks'), ], ]; diff --git a/core/modules/navigation/tests/src/Kernel/NavigationContentLinksTest.php b/core/modules/navigation/tests/src/Kernel/NavigationContentLinksTest.php new file mode 100644 index 0000000000000000000000000000000000000000..6b30a6b5c6ceb4c99f8ca0e788ce562261afe9ff --- /dev/null +++ b/core/modules/navigation/tests/src/Kernel/NavigationContentLinksTest.php @@ -0,0 +1,143 @@ +<?php + +declare(strict_types=1); + +namespace Drupal\Tests\navigation\Kernel; + +use Drupal\KernelTests\KernelTestBase; +use Drupal\Tests\media\Traits\MediaTypeCreationTrait; +use Drupal\Tests\node\Traits\ContentTypeCreationTrait; +use Drupal\Tests\user\Traits\UserCreationTrait; + +/** + * Tests \Drupal\navigation\NavigationContentLinks. + * + * @group navigation + * @see \Drupal\navigation\NavigationContentLinks + */ +class NavigationContentLinksTest extends KernelTestBase { + + use ContentTypeCreationTrait; + use MediaTypeCreationTrait; + use UserCreationTrait; + + /** + * {@inheritdoc} + */ + protected static $modules = [ + 'navigation', + 'node', + 'file', + 'media', + 'layout_builder', + 'system', + 'views', + 'user', + 'field', + 'media_test_source', + 'image', + 'text', + 'help', + ]; + + /** + * {@inheritdoc} + */ + protected function setUp(): void { + parent::setUp(); + $this->installEntitySchema('node'); + $this->installConfig(['node', 'file']); + + $this->createContentType(['type' => 'article']); + $this->createContentType(['type' => 'blog']); + $this->createContentType(['type' => 'landing_page']); + + $this->installEntitySchema('media'); + $this->createMediaType('test', ['id' => 'document', 'label' => 'Document']); + $this->createMediaType('test', ['id' => 'image', 'label' => 'Image']); + $this->createMediaType('test', ['id' => 'special', 'label' => 'Special']); + } + + /** + * Tests if the expected navigation content links are added/removed correctly. + */ + public function testNavigationContentLinks(): void { + $module_installer = \Drupal::service('module_installer'); + $menu_link_manager = \Drupal::service('plugin.manager.menu.link'); + $links = $menu_link_manager->getDefinitions(); + + // Assert that the "Create" link is added to the menu. + $this->assertArrayHasKey('navigation.create', $links); + $this->assertEquals('node.add_page', $links['navigation.create']['route_name']); + $this->assertEquals('Create', $links['navigation.create']['title']); + + // Assert that the "Content" link is added to the menu. + $this->assertArrayHasKey('navigation.content', $links); + $this->assertEquals('system.admin_content', $links['navigation.content']['route_name']); + $this->assertEquals('Content', $links['navigation.content']['title']); + + // Assert that the "Article" submenu link is added to the menu. + $this->assertArrayHasKey('navigation.content.node_type.article', $links); + $this->assertEquals('node.add', $links['navigation.content.node_type.article']['route_name']); + $this->assertEquals('article', $links['navigation.content.node_type.article']['title']); + + // Assert that the "Blog" submenu link is added to the menu. + $this->assertArrayHasKey('navigation.content.node_type.blog', $links); + $this->assertEquals('node.add', $links['navigation.content.node_type.blog']['route_name']); + $this->assertEquals('blog', $links['navigation.content.node_type.blog']['title']); + + // Assert that the "Landing Page" submenu link is added to the menu. + $this->assertArrayHasKey('navigation.content.node_type.landing_page', $links); + $this->assertEquals('node.add', $links['navigation.content.node_type.landing_page']['route_name']); + $this->assertEquals('landing_page', $links['navigation.content.node_type.landing_page']['title']); + + // Assert that the "Create User" submenu link is added to the menu. + $this->assertArrayHasKey('navigation.create.user', $links); + $this->assertEquals('user.admin_create', $links['navigation.create.user']['route_name']); + $this->assertEquals('User', $links['navigation.create.user']['title']); + + // Assert that the "Document" media type link is added to the menu. + $this->assertArrayHasKey('navigation.content.media_type.document', $links); + $this->assertEquals('entity.media.add_form', $links['navigation.content.media_type.document']['route_name']); + $this->assertEquals('Document', $links['navigation.content.media_type.document']['title']); + + // Assert that the "Image" media type link is added to the menu. + $this->assertArrayHasKey('navigation.content.media_type.image', $links); + $this->assertEquals('entity.media.add_form', $links['navigation.content.media_type.image']['route_name']); + $this->assertEquals('Image', $links['navigation.content.media_type.image']['title']); + + // Assert that the "Special" media type link is not added to the menu. + $this->assertArrayNotHasKey('navigation.content.media_type.special', $links); + + // Assert that the "Media" link is added. + $this->assertArrayHasKey('navigation.media', $links); + $this->assertEquals('entity.media.collection', $links['navigation.media']['route_name']); + $this->assertEquals('Media', $links['navigation.media']['title']); + + // Assert that the "Files" link is added. + $this->assertArrayHasKey('navigation.files', $links); + $this->assertEquals('view.files.page_1', $links['navigation.files']['route_name']); + $this->assertEquals('Files', $links['navigation.files']['title']); + + // Assert that the "Help" link is removed from the menu. + $this->assertArrayNotHasKey('help.main', $links); + + // Assert that the "Content" link is removed from the menu. + $this->assertArrayNotHasKey('system.admin_content', $links); + + // Assert that "Blocks" link is not added. + $this->assertArrayNotHasKey('navigation.blocks', $links); + + // Install the block_content module and rebuild the menu links. + $module_installer->install(['block_content']); + // Rebuild the links after module installation. + $menu_link_manager->rebuild(); + $links = $menu_link_manager->getDefinitions(); + + // Assert that "Blocks" link is added. + $this->assertArrayHasKey('navigation.blocks', $links); + $this->assertEquals('entity.block_content.collection', $links['navigation.blocks']['route_name']); + $this->assertEquals('Blocks', $links['navigation.blocks']['title']); + } + +}