using System.Threading.Tasks; using Microsoft.Extensions.DependencyInjection; using Shouldly; using Volo.Abp.Modularity; using Volo.Abp.TestBase; using Volo.ExtensionMethods.Collections.Generic; using Xunit; namespace Volo.Abp.UI.Navigation { public class MenuManager_Tests : AbpIntegratedTest { private readonly IMenuManager _menuManager; public MenuManager_Tests() { _menuManager = ServiceProvider.GetRequiredService(); } [Fact] public async Task Should_Get_Menu() { var mainMenu = await _menuManager.GetAsync(StandardMenus.Main); mainMenu.Name.ShouldBe(StandardMenus.Main); mainMenu.DisplayName.ShouldBe("Main Menu"); mainMenu.Items.Count.ShouldBe(2); mainMenu.Items[0].Name.ShouldBe("Dashboard"); mainMenu.Items[1].Name.ShouldBe("Administration"); mainMenu.Items[1].Items[0].Name.ShouldBe("Administration.UserManagement"); mainMenu.Items[1].Items[1].Name.ShouldBe("Administration.RoleManagement"); mainMenu.Items[1].Items[2].Name.ShouldBe("Administration.DashboardSettings"); } public class TestModule : AbpModule { public override void ConfigureServices(IServiceCollection services) { services.Configure(options => { options.MenuContributors.Add(new TestMenuContributer1()); options.MenuContributors.Add(new TestMenuContributer2()); }); } } /* Adds menu items: * - Administration * - User Management * - Role Management */ public class TestMenuContributer1 : IMenuContributor { public Task ConfigureMenuAsync(MenuConfigurationContext context) { if (context.Menu.Name != StandardMenus.Main) { return Task.CompletedTask; } context.Menu.DisplayName = "Main Menu"; var administration = context.Menu.Items.GetOrAdd( m => m.Name == "Administration", () => new ApplicationMenuItem("Administration", "Administration") ); administration.AddItem(new ApplicationMenuItem("Administration.UserManagement", "User Management")); administration.AddItem(new ApplicationMenuItem("Administration.RoleManagement", "Role Management")); return Task.CompletedTask; } } /* Adds menu items: * - Dashboard * - Administration * - Dashboard Settings */ public class TestMenuContributer2 : IMenuContributor { public Task ConfigureMenuAsync(MenuConfigurationContext context) { if (context.Menu.Name != StandardMenus.Main) { return Task.CompletedTask; } context.Menu.Items.Insert(0, new ApplicationMenuItem("Dashboard", "Dashboard")); var administration = context.Menu.Items.GetOrAdd( m => m.Name == "Administration", () => new ApplicationMenuItem("Administration", "Administration") ); administration.AddItem(new ApplicationMenuItem("Administration.DashboardSettings", "Dashboard Settings")); return Task.CompletedTask; } } } }