Premiere commit - Omika
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
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(" "));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user