elsa-core/test/unit/Elsa.Dashboard.Api.UnitTests/DashboardRangeResolverTests.cs
2026-06-02 22:25:25 +02:00

56 lines
1.9 KiB
C#

using Elsa.Common;
using Elsa.Dashboard.Abstractions.Models;
using Elsa.Dashboard.Api.Services;
namespace Elsa.Dashboard.Api.UnitTests;
public class DashboardRangeResolverTests
{
private readonly DateTimeOffset _now = new(2026, 06, 01, 12, 00, 00, TimeSpan.Zero);
private readonly DashboardRangeResolver _resolver;
public DashboardRangeResolverTests()
{
_resolver = new(new TestClock(_now));
}
[Theory]
[InlineData("1h", DashboardRangeKeys.OneHour, 1)]
[InlineData("24h", DashboardRangeKeys.TwentyFourHours, 24)]
[InlineData("7d", DashboardRangeKeys.SevenDays, 168)]
[InlineData(null, DashboardRangeKeys.TwentyFourHours, 24)]
[InlineData("unknown", DashboardRangeKeys.TwentyFourHours, 24)]
public void Resolve_ReturnsExpectedRange(string? input, string expectedKey, int expectedHours)
{
var range = _resolver.Resolve(input);
Assert.Equal(expectedKey, range.Key);
Assert.Equal(_now, range.To);
Assert.Equal(_now.AddHours(-expectedHours), range.From);
}
[Theory]
[InlineData(DashboardRangeKeys.OneHour, DashboardTrendGranularity.Minute)]
[InlineData(DashboardRangeKeys.TwentyFourHours, DashboardTrendGranularity.Hour)]
[InlineData(DashboardRangeKeys.SevenDays, DashboardTrendGranularity.Day)]
public void ResolveGranularity_ChoosesDefaultForRange(string range, string expectedGranularity)
{
var granularity = _resolver.ResolveGranularity(null, range);
Assert.Equal(expectedGranularity, granularity);
}
[Fact]
public void ResolveGranularity_PreservesExplicitGranularity()
{
var granularity = _resolver.ResolveGranularity("custom", DashboardRangeKeys.OneHour);
Assert.Equal("custom", granularity);
}
private class TestClock(DateTimeOffset utcNow) : ISystemClock
{
public DateTimeOffset UtcNow { get; } = utcNow;
}
}