mirror of
https://github.com/Sea-Haven-Industries/shoc-backend.git
synced 2026-10-06 14:42:09 +00:00
test(work-orders): cover FE-aligned mappers and derived field logic
This commit is contained in:
parent
187d935da2
commit
76e839addf
2 changed files with 107 additions and 0 deletions
75
SeaHavenIndustries.Tests/WorkOrderDerivedFieldsTests.cs
Normal file
75
SeaHavenIndustries.Tests/WorkOrderDerivedFieldsTests.cs
Normal file
|
|
@ -0,0 +1,75 @@
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
32
SeaHavenIndustries.Tests/WorkOrderTypeMapperTests.cs
Normal file
32
SeaHavenIndustries.Tests/WorkOrderTypeMapperTests.cs
Normal file
|
|
@ -0,0 +1,32 @@
|
||||||
|
using Data.SeaHavenIndustries.Enums;
|
||||||
|
using SeaHaven.Services.Helpers;
|
||||||
|
|
||||||
|
namespace SeaHavenIndustries.Tests;
|
||||||
|
|
||||||
|
public class WorkOrderTypeMapperTests
|
||||||
|
{
|
||||||
|
[Theory]
|
||||||
|
[InlineData("PM", WorkOrderType.PM)]
|
||||||
|
[InlineData("Reactive", WorkOrderType.Reactive)]
|
||||||
|
[InlineData("Emergency", WorkOrderType.Emergency)]
|
||||||
|
[InlineData("Add-On", WorkOrderType.AddOn)]
|
||||||
|
public void TryParseFeLabel_BoardTypes(string label, WorkOrderType expected)
|
||||||
|
{
|
||||||
|
Assert.True(WorkOrderTypeMapper.TryParseFeLabel(label, out var type));
|
||||||
|
Assert.Equal(expected, type);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void TryParseFeLabel_Overdue_ReturnsFalse()
|
||||||
|
{
|
||||||
|
Assert.False(WorkOrderTypeMapper.TryParseFeLabel("Overdue", out _));
|
||||||
|
}
|
||||||
|
|
||||||
|
[Theory]
|
||||||
|
[InlineData(WorkOrderType.AddOn, "Add-On")]
|
||||||
|
[InlineData(WorkOrderType.Reactive, "Reactive")]
|
||||||
|
public void ToFeLabel_ReturnsBoardLabel(WorkOrderType type, string expected)
|
||||||
|
{
|
||||||
|
Assert.Equal(expected, WorkOrderTypeMapper.ToFeLabel(type));
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Add table
Reference in a new issue