mirror of
https://github.com/Sea-Haven-Industries/shoc-backend.git
synced 2026-09-30 09:33:13 +00:00
75 lines
2.2 KiB
C#
75 lines
2.2 KiB
C#
using Data.SeaHavenIndustries;
|
|
using Data.SeaHavenIndustries.Enums;
|
|
using SeaHaven.Services.Helpers;
|
|
|
|
namespace SeaHavenIndustries.Tests;
|
|
|
|
public class WorkOrderDerivedFieldsTests
|
|
{
|
|
[Fact]
|
|
public void IsPastDue_WhenScheduledBeforeTodayAndNotTerminal_ReturnsTrue()
|
|
{
|
|
var wo = new WorkOrder
|
|
{
|
|
ScheduledDate = DateTime.UtcNow.AddDays(-2),
|
|
LifecycleStatus = LifecycleStatus.Scheduled
|
|
};
|
|
|
|
Assert.True(WorkOrderDerivedFields.IsPastDue(wo, DateOnly.FromDateTime(DateTime.UtcNow)));
|
|
}
|
|
|
|
[Fact]
|
|
public void IsPastDue_WhenCompleted_ReturnsFalse()
|
|
{
|
|
var wo = new WorkOrder
|
|
{
|
|
ScheduledDate = DateTime.UtcNow.AddDays(-2),
|
|
LifecycleStatus = LifecycleStatus.Completed
|
|
};
|
|
|
|
Assert.False(WorkOrderDerivedFields.IsPastDue(wo, DateOnly.FromDateTime(DateTime.UtcNow)));
|
|
}
|
|
|
|
[Fact]
|
|
public void ApplyAutoSchedule_WhenDateAndAssignee_PromotesToScheduled()
|
|
{
|
|
var wo = new WorkOrder
|
|
{
|
|
LifecycleStatus = LifecycleStatus.Incomplete,
|
|
ScheduledDate = new DateTime(2026, 6, 25),
|
|
AssignTo = "dispatcher-1"
|
|
};
|
|
|
|
Assert.True(WorkOrderDerivedFields.ApplyAutoScheduleIfEligible(wo));
|
|
Assert.Equal(LifecycleStatus.Scheduled, wo.LifecycleStatus);
|
|
}
|
|
|
|
[Fact]
|
|
public void ApplyAutoSchedule_WeekOnly_DoesNotPromote()
|
|
{
|
|
var wo = new WorkOrder
|
|
{
|
|
LifecycleStatus = LifecycleStatus.Incomplete,
|
|
ScheduledDate = new DateTime(2026, 6, 25),
|
|
AssignTo = "dispatcher-1",
|
|
ScheduleWeekOnly = true,
|
|
TargetWeek = new DateOnly(2026, 6, 22)
|
|
};
|
|
|
|
Assert.False(WorkOrderDerivedFields.ApplyAutoScheduleIfEligible(wo));
|
|
Assert.Equal(LifecycleStatus.Incomplete, wo.LifecycleStatus);
|
|
}
|
|
|
|
[Fact]
|
|
public void SetInitialLifecycleStatus_NewWo_StartsIncompleteThenAutoSchedules()
|
|
{
|
|
var wo = new WorkOrder
|
|
{
|
|
ScheduledDate = new DateTime(2026, 6, 25),
|
|
AssignTo = "dispatcher-1"
|
|
};
|
|
|
|
WorkOrderDerivedFields.SetInitialLifecycleStatus(wo);
|
|
Assert.Equal(LifecycleStatus.Scheduled, wo.LifecycleStatus);
|
|
}
|
|
}
|