| File: Layout\LegacyNavMenuTests.cs | Web Access |
| Project: src\tests\Aspire.Dashboard.Components.Tests\Aspire.Dashboard.Components.Tests.csproj (Aspire.Dashboard.Components.Tests) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using Aspire.Dashboard.Components.Legacy.Layout; using Aspire.Dashboard.Components.Tests.Shared; using Aspire.Dashboard.Tests.Shared; using Bunit; using Microsoft.AspNetCore.Components; using Microsoft.Extensions.DependencyInjection; using Xunit; namespace Aspire.Dashboard.Components.Tests.Layout; [UseCulture("en-US")] public class LegacyNavMenuTests : DashboardTestContext { [Theory] [InlineData("/", "/legacy")] [InlineData("/?resource=api", "/legacy?resource=api")] [InlineData("/traces", "/legacy/traces")] [InlineData("/traces/detail/abc", "/legacy/traces/detail/abc")] public void ToLegacyUrl_PrefixesRouteBelowLegacy(string url, string expectedUrl) { Assert.Equal(expectedUrl, LegacyNavUrls.ToLegacyUrl(url)); } [Fact] public void DesktopNavMenu_LinksToLegacyPages() { SetupServices("/legacy/traces"); var cut = Render<LegacyDesktopNavMenu>(); Assert.Equal( ["/legacy", "/legacy/consolelogs", "/legacy/structuredlogs", "/legacy/traces", "/legacy/metrics"], cut.FindAll("[href]").Select(link => link.GetAttribute("href")).Distinct()); } [Theory] [InlineData("/legacy/traces", "Traces")] [InlineData("/legacy/traces/detail/abc", "Traces")] [InlineData("/legacy/consolelogs/resource/api", "Console logs")] [InlineData("/legacy", "Resources")] [InlineData("/legacy/", "Resources")] [InlineData("/legacy?view=Graph", "Resources")] [InlineData("/legacy/resources", "Resources")] public void MobileNavMenu_MarksCurrentLegacyPage(string currentUrl, string expectedText) { SetupServices(currentUrl); FluentUISetupHelpers.SetupFluentDivider(this); var cut = Render<LegacyMobileNavMenu>(builder => { builder.Add(p => p.IsNavMenuOpen, true); builder.Add(p => p.HasResourceTerminals, false); builder.Add(p => p.CloseNavMenu, () => { }); builder.Add(p => p.LaunchHelpAsync, () => Task.CompletedTask); builder.Add(p => p.LaunchAIAgentsAsync, () => Task.CompletedTask); builder.Add(p => p.IsAgentHelpEnabled, false); builder.Add(p => p.LaunchNotificationsAsync, () => Task.CompletedTask); builder.Add(p => p.LaunchSettingsAsync, () => Task.CompletedTask); }); var currentItem = Assert.Single(cut.FindAll("""fluent-menu-item[aria-current="page"]""")); Assert.Equal(expectedText, currentItem.GetAttribute("title")); Assert.True(currentItem.ClassList.Contains("mobile-nav-menu-item-active")); } private void SetupServices(string currentUrl) { JSInterop.Mode = JSRuntimeMode.Loose; FluentUISetupHelpers.AddCommonDashboardServices(this); Services.AddSingleton<IDashboardClient>(new TestDashboardClient(isEnabled: true)); FluentUISetupHelpers.SetupFluentUIComponents(this); FluentUISetupHelpers.SetupFluentMenu(this); FluentUISetupHelpers.SetupFluentAnchoredRegion(this); Services.GetRequiredService<NavigationManager>().NavigateTo(currentUrl); } }