shoc-backend/SeaHavenIndustries.Tests/WorkOrderDerivedFieldsTests.cs

80 lines
2.2 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using Data.SeaHavenIndustries.Enums;
using SeaHaven.Services.Helpers;
namespace SeaHavenIndustries.Tests;
public class WorkOrderDerivedFieldsTests
{
private static readonly DateTime Today = new(2026, 6, 24, 12, 0, 0, DateTimeKind.Utc);
[Fact]
public void IsPastDue_WhenScheduledBeforeTodayAndNotTerminal_ReturnsTrue()
{
var result = WorkOrderDerivedFields.IsPastDue(
Today.AddDays(-1),
LifecycleStatus.Scheduled,
Today);
Assert.True(result);
}
[Fact]
public void IsPastDue_WhenScheduledToday_ReturnsFalse()
{
var result = WorkOrderDerivedFields.IsPastDue(
Today,
LifecycleStatus.Scheduled,
Today);
Assert.False(result);
}
[Fact]
public void IsPastDue_WhenComplete_ReturnsFalse()
{
var result = WorkOrderDerivedFields.IsPastDue(
Today.AddDays(-3),
LifecycleStatus.Complete,
Today);
Assert.False(result);
}
[Fact]
public void IsPastDue_WhenNoScheduledDate_ReturnsFalse()
{
var result = WorkOrderDerivedFields.IsPastDue(null, LifecycleStatus.Incomplete, Today);
Assert.False(result);
}
[Theory]
[InlineData(DayOfWeek.Monday, "monday")]
[InlineData(DayOfWeek.Friday, "friday")]
[InlineData(DayOfWeek.Saturday, null)]
public void GetDayGroup_MapsWeekdays(DayOfWeek day, string? expected)
{
var date = new DateTime(2026, 6, 22, 0, 0, 0, DateTimeKind.Utc);
while date.DayOfWeek != day)
date = date.AddDays(1);
Assert.Equal(expected, WorkOrderDerivedFields.GetDayGroup(date));
}
[Fact]
public void FormatApptTime_WithStartAndEnd_ReturnsRange()
{
var start = new DateTime(2026, 6, 24, 7, 0, 0);
var end = new DateTime(2026, 6, 24, 9, 0, 0);
var result = WorkOrderDerivedFields.FormatApptTime(start, end);
Assert.Equal("07:00 – 09:00", result);
}
[Fact]
public void FormatApptTime_WithStartOnly_ReturnsTime()
{
var start = new DateTime(2026, 6, 24, 7, 30, 0);
Assert.Equal("07:30", WorkOrderDerivedFields.FormatApptTime(start, null));
}
}