File: tests\Shared\DashboardModel\ModelTestHelpers.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 System.Collections.Immutable;
using Aspire.Dashboard.Model;
using Microsoft.Extensions.Diagnostics.HealthChecks;
 
namespace Aspire.Tests.Shared.DashboardModel;
 
public static class ModelTestHelpers
{
    public static ResourceViewModel CreateResource(
        string? appName = null,
        KnownResourceState? state = null,
        string? displayName = null,
        ImmutableArray<UrlViewModel>? urls = null,
        Dictionary<string, ResourcePropertyViewModel>? properties = null,
        ImmutableArray<EnvironmentVariableViewModel>? environment = null,
        string? resourceType = null,
        string? stateStyle = null,
        HealthStatus? reportHealthStatus = null,
        bool createNullHealthReport = false)
    {
        return new ResourceViewModel
        {
            Name = appName ?? "Name!",
            ResourceType = resourceType ?? KnownResourceTypes.Container,
            DisplayName = displayName ?? appName ?? "Display name!",
            Uid = Guid.NewGuid().ToString(),
            CreationTimeStamp = DateTime.UtcNow,
            StartTimeStamp = DateTime.UtcNow,
            StopTimeStamp = DateTime.UtcNow,
            Environment = environment ?? [],
            Urls = urls ?? [],
            Volumes = [],
            Properties = properties?.ToImmutableDictionary() ?? ImmutableDictionary<string, ResourcePropertyViewModel>.Empty,
            State = state?.ToString(),
            KnownState = state,
            StateStyle = stateStyle,
            HealthReports = reportHealthStatus is null && !createNullHealthReport ? [] : [new HealthReportViewModel("healthcheck", reportHealthStatus, null, null)],
            Commands = [],
            Relationships = [],
        };
    }
}