| File: Controls\ResourceNameDisplayTests.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.Tests.Shared; using Aspire.Dashboard.Model; using Aspire.Tests.Shared.DashboardModel; using Bunit; using Google.Protobuf.WellKnownTypes; using Microsoft.AspNetCore.Components; using Microsoft.Extensions.DependencyInjection; using Xunit; namespace Aspire.Dashboard.Components.Tests.Controls; [UseCulture("en-US")] public class ResourceNameDisplayTests : DashboardTestContext { [Theory] [InlineData("/resources", "Persistent", true, false)] [InlineData("/resources", "Session", false, false)] [InlineData("/resources", null, false, false)] [InlineData("/resources", "Unknown", false, false)] [InlineData("/legacy/resources", "Persistent", false, true)] [InlineData("/legacy/resources", "Session", false, false)] [InlineData("/legacy/resources", null, false, false)] public void Render_OnlyModernPersistentContainerGetsInfinityBadge(string location, string? lifetime, bool expectedBadge, bool expectedPin) { FluentUISetupHelpers.AddCommonDashboardServices(this); Services.AddSingleton<IconResolver>(); Services.GetRequiredService<NavigationManager>().NavigateTo(location); var resource = ModelTestHelpers.CreateResource("cache", properties: lifetime is null ? [] : new() { [KnownProperties.Container.Lifetime] = new(KnownProperties.Container.Lifetime, Value.ForString(lifetime), false, null, 0, null, false) }); var cut = Render<ResourceNameDisplay>(p => p .Add(p => p.Resource, resource) .Add(p => p.FormatName, r => r.DisplayName) .Add(p => p.FilterText, "") .Add(p => p.ShowHiddenIndicator, false)); Assert.Equal("cache", cut.Find(".resource-name-text").TextContent); Assert.Single(cut.FindAll(".resource-icon")); Assert.Equal(expectedBadge ? 1 : 0, cut.FindAll(".modern-resource-icon .persistent-container-badge").Count); Assert.Equal(expectedPin ? 1 : 0, cut.FindAll(".persistent-container-icon").Count); if (expectedBadge) { var badge = cut.Find(".persistent-container-badge"); const string description = "This container is persistent and won't be stopped when the app host is shut down."; Assert.Equal("img", badge.GetAttribute("role")); Assert.Equal(description, badge.GetAttribute("aria-label")); Assert.Equal(description, badge.GetAttribute("data-tooltip")); Assert.Equal("true", badge.QuerySelector("svg")!.GetAttribute("aria-hidden")); } if (location.StartsWith("/legacy", StringComparison.Ordinal)) { Assert.Empty(cut.FindAll(".modern-resource-icon")); } } }