Files
Omika/tests/Omika.Diagnostics.Tests/DashboardPeriodTests.cs
T
2026-10-23 18:46:50 +02:00

81 lines
2.7 KiB
C#

using Omika.Diagnostics.Queries;
namespace Omika.Diagnostics.Tests;
/// <summary>
/// Tâche 4 — Périodes du Dashboard (§T4/5) et détection des niveaux d'erreur réels
/// (§T4/6). Logique pure (Core), testable sans intégration Web : c'est exactement la
/// logique déléguée par <c>IndexModel</c> (<c>DashboardPeriods.Resolve</c>).
/// </summary>
public class DashboardPeriodTests
{
[Fact]
public void Resolve_Null_ReturnsDefault()
{
DashboardPeriod period = DashboardPeriods.Resolve(null);
Assert.Equal(DashboardPeriods.DefaultKey, period.Key);
Assert.Equal(TimeSpan.FromHours(24), period.Duration);
}
[Fact]
public void Resolve_24h()
{
DashboardPeriod period = DashboardPeriods.Resolve("24h");
Assert.Equal("24h", period.Key);
Assert.Equal(TimeSpan.FromHours(24), period.Duration);
Assert.Equal(DiagnosticTimeBucket.Hour, period.Bucket);
}
[Fact]
public void Resolve_7d()
{
DashboardPeriod period = DashboardPeriods.Resolve("7d");
Assert.Equal("7d", period.Key);
Assert.Equal(TimeSpan.FromDays(7), period.Duration);
Assert.Equal(DiagnosticTimeBucket.Day, period.Bucket);
}
[Fact]
public void Resolve_30d()
{
DashboardPeriod period = DashboardPeriods.Resolve("30d");
Assert.Equal("30d", period.Key);
Assert.Equal(TimeSpan.FromDays(30), period.Duration);
Assert.Equal(DiagnosticTimeBucket.Day, period.Bucket);
}
[Fact]
public void Resolve_Invalid_FallsBackToDefault()
{
DashboardPeriod period = DashboardPeriods.Resolve("999d");
Assert.Equal(DashboardPeriods.DefaultKey, period.Key);
}
[Fact]
public void Resolve_IsCaseInsensitive()
{
Assert.Equal("24h", DashboardPeriods.Resolve("24H").Key);
Assert.Equal("7d", DashboardPeriods.Resolve("7D").Key);
}
[Fact]
public void All_ExposesExactlyThreePeriods()
{
Assert.Equal(3, DashboardPeriods.All.Count);
Assert.Equal(new[] { "24h", "7d", "30d" }, DashboardPeriods.All.Select(p => p.Key).ToArray());
}
[Fact]
public void IsError_MatchesErrorAndCritical_CaseInsensitively()
{
Assert.True(DiagnosticErrorLevels.IsError("Error"));
Assert.True(DiagnosticErrorLevels.IsError("error"));
Assert.True(DiagnosticErrorLevels.IsError("Critical"));
Assert.True(DiagnosticErrorLevels.IsError("CRITICAL"));
Assert.False(DiagnosticErrorLevels.IsError("Info"));
Assert.False(DiagnosticErrorLevels.IsError("Warning"));
Assert.False(DiagnosticErrorLevels.IsError(null));
Assert.False(DiagnosticErrorLevels.IsError(" "));
}
}