| File: Model\ResourcesViewModelTests.cs | Web Access |
| Project: src\tests\Aspire.Dashboard.Tests\Aspire.Dashboard.Tests.csproj (Aspire.Dashboard.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.Model; using Aspire.Tests.Shared.DashboardModel; using Xunit; using static Aspire.Dashboard.Components.Pages.Resources; namespace Aspire.Dashboard.Tests.Model; public sealed class ResourcesViewModelTests { [Fact] public void TableView_ExcludesParameters() { var vm = new ResourcesViewModel { SelectedViewKind = ResourceViewKind.Table, TextFilter = "" }; vm.ResourceTypesToVisibility[KnownResourceTypes.Parameter] = true; vm.ResourceStatesToVisibility[KnownResourceState.Running.ToString()] = true; vm.ResourceHealthStatusesToVisibility["Healthy"] = true; var resource = ModelTestHelpers.CreateResource(resourceType: KnownResourceTypes.Parameter, state: KnownResourceState.Running); Assert.False(vm.Filter(resource)); } [Fact] public void GraphView_ExcludesParameters() { var vm = new ResourcesViewModel { SelectedViewKind = ResourceViewKind.Graph, TextFilter = "" }; vm.ResourceTypesToVisibility[KnownResourceTypes.Parameter] = true; vm.ResourceStatesToVisibility[KnownResourceState.Running.ToString()] = true; vm.ResourceHealthStatusesToVisibility["Healthy"] = true; var resource = ModelTestHelpers.CreateResource(resourceType: KnownResourceTypes.Parameter, state: KnownResourceState.Running); Assert.False(vm.Filter(resource)); } [Fact] public void ParametersView_ShowsOnlyParameters() { var vm = new ResourcesViewModel { SelectedViewKind = ResourceViewKind.Parameters, TextFilter = "" }; vm.ResourceTypesToVisibility[KnownResourceTypes.Container] = true; vm.ResourceStatesToVisibility[KnownResourceState.Running.ToString()] = true; vm.ResourceHealthStatusesToVisibility["Healthy"] = true; var containerResource = ModelTestHelpers.CreateResource(resourceType: KnownResourceTypes.Container, state: KnownResourceState.Running); var parameterResource = ModelTestHelpers.CreateResource(resourceType: KnownResourceTypes.Parameter, state: KnownResourceState.Running); Assert.False(vm.Filter(containerResource)); Assert.True(vm.Filter(parameterResource)); } [Fact] public void TypeNotVisible_ExcludesResource() { var vm = new ResourcesViewModel { SelectedViewKind = ResourceViewKind.Table, TextFilter = "" }; vm.ResourceTypesToVisibility[KnownResourceTypes.Container] = false; vm.ResourceStatesToVisibility[KnownResourceState.Running.ToString()] = true; vm.ResourceHealthStatusesToVisibility["Healthy"] = true; var resource = ModelTestHelpers.CreateResource(resourceType: KnownResourceTypes.Container, state: KnownResourceState.Running); Assert.False(vm.Filter(resource)); } [Fact] public void StateNotVisible_ExcludesResource() { var vm = new ResourcesViewModel { SelectedViewKind = ResourceViewKind.Table, TextFilter = "" }; vm.ResourceTypesToVisibility[KnownResourceTypes.Container] = true; vm.ResourceStatesToVisibility[KnownResourceState.Running.ToString()] = false; vm.ResourceHealthStatusesToVisibility["Healthy"] = true; var resource = ModelTestHelpers.CreateResource(resourceType: KnownResourceTypes.Container, state: KnownResourceState.Running); Assert.False(vm.Filter(resource)); } [Fact] public void TextFilterDoesNotMatch_ExcludesResource() { var vm = new ResourcesViewModel { SelectedViewKind = ResourceViewKind.Table, TextFilter = "xyz-no-match" }; vm.ResourceTypesToVisibility[KnownResourceTypes.Container] = true; vm.ResourceStatesToVisibility[KnownResourceState.Running.ToString()] = true; vm.ResourceHealthStatusesToVisibility["Healthy"] = true; var resource = ModelTestHelpers.CreateResource(resourceName: "my-app", resourceType: KnownResourceTypes.Container, state: KnownResourceState.Running); Assert.False(vm.Filter(resource)); } [Fact] public void TextFilterMatches_IncludesResource() { var vm = new ResourcesViewModel { SelectedViewKind = ResourceViewKind.Table, TextFilter = "my-app" }; vm.ResourceTypesToVisibility[KnownResourceTypes.Container] = true; vm.ResourceStatesToVisibility[KnownResourceState.Running.ToString()] = true; vm.ResourceHealthStatusesToVisibility["Healthy"] = true; var resource = ModelTestHelpers.CreateResource(resourceName: "my-app", resourceType: KnownResourceTypes.Container, state: KnownResourceState.Running); Assert.True(vm.Filter(resource)); } [Fact] public void HiddenResource_ExcludedWhenShowHiddenIsFalse() { var vm = new ResourcesViewModel { SelectedViewKind = ResourceViewKind.Table, TextFilter = "", ShowHiddenResources = false }; vm.ResourceTypesToVisibility[KnownResourceTypes.Container] = true; vm.ResourceStatesToVisibility[KnownResourceState.Running.ToString()] = true; vm.ResourceHealthStatusesToVisibility["Healthy"] = true; var resource = ModelTestHelpers.CreateResource(resourceType: KnownResourceTypes.Container, state: KnownResourceState.Running, hidden: true); Assert.False(vm.Filter(resource)); } [Fact] public void HiddenResource_IncludedWhenShowHiddenIsTrue() { var vm = new ResourcesViewModel { SelectedViewKind = ResourceViewKind.Table, TextFilter = "", ShowHiddenResources = true }; vm.ResourceTypesToVisibility[KnownResourceTypes.Container] = true; vm.ResourceStatesToVisibility[KnownResourceState.Running.ToString()] = true; vm.ResourceHealthStatusesToVisibility["Healthy"] = true; var resource = ModelTestHelpers.CreateResource(resourceType: KnownResourceTypes.Container, state: KnownResourceState.Running, hidden: true); Assert.True(vm.Filter(resource)); } [Fact] public void AllFiltersPass_IncludesResource() { var vm = new ResourcesViewModel { SelectedViewKind = ResourceViewKind.Table, TextFilter = "" }; vm.ResourceTypesToVisibility[KnownResourceTypes.Container] = true; vm.ResourceStatesToVisibility[KnownResourceState.Running.ToString()] = true; vm.ResourceHealthStatusesToVisibility["Healthy"] = true; var resource = ModelTestHelpers.CreateResource(resourceType: KnownResourceTypes.Container, state: KnownResourceState.Running); Assert.True(vm.Filter(resource)); } }