mirror of
https://github.com/Sea-Haven-Industries/shoc-backend.git
synced 2026-09-30 06:03:12 +00:00
Expand LifecycleStatus (EnRoute, OnSite, Rescheduled, Pending, PendingQuote) and WorkOrderType (Reactive, AddOn) to match the frontend prototype. Add FE label round-trip via LifecycleStatusMapper/WorkOrderTypeMapper, update derived fields, mutation rules and board unscheduled filter, and reactivate [Authorize] on WorkOrderController. Fix pre-existing dayGroup test expectation.
55 lines
1.8 KiB
C#
55 lines
1.8 KiB
C#
using Data.SeaHavenIndustries.Enums;
|
|
using SeaHaven.Services.Helpers;
|
|
|
|
namespace SeaHavenIndustries.Tests;
|
|
|
|
public class WorkOrderBoardMutationRulesTests
|
|
{
|
|
[Theory]
|
|
[InlineData(LifecycleStatus.Canceled, true)]
|
|
[InlineData(LifecycleStatus.Completed, true)]
|
|
[InlineData(LifecycleStatus.Scheduled, false)]
|
|
[InlineData(LifecycleStatus.Incomplete, false)]
|
|
public void IsReadOnly_ReflectsTerminalStatuses(LifecycleStatus status, bool expected)
|
|
{
|
|
Assert.Equal(expected, WorkOrderBoardMutationRules.IsReadOnly(status));
|
|
}
|
|
|
|
[Fact]
|
|
public void ShouldBlockStatusChangeWhenPastDue_BlocksOnlyLifecycleStatus()
|
|
{
|
|
Assert.True(WorkOrderBoardMutationRules.ShouldBlockStatusChangeWhenPastDue(
|
|
WorkOrderBoardFieldNames.LifecycleStatus, isPastDue: true));
|
|
Assert.False(WorkOrderBoardMutationRules.ShouldBlockStatusChangeWhenPastDue(
|
|
WorkOrderBoardFieldNames.ScheduledDate, isPastDue: true));
|
|
}
|
|
|
|
[Fact]
|
|
public void ShouldAutoSchedule_WhenIncompleteWithDateAndAssignee()
|
|
{
|
|
Assert.True(WorkOrderBoardMutationRules.ShouldAutoSchedule(
|
|
LifecycleStatus.Incomplete,
|
|
new DateTime(2026, 6, 25),
|
|
"dispatcher-1"));
|
|
}
|
|
|
|
[Fact]
|
|
public void ShouldAutoSchedule_FalseWhenAlreadyScheduled()
|
|
{
|
|
Assert.False(WorkOrderBoardMutationRules.ShouldAutoSchedule(
|
|
LifecycleStatus.Scheduled,
|
|
new DateTime(2026, 6, 25),
|
|
"dispatcher-1"));
|
|
}
|
|
|
|
[Fact]
|
|
public void IsReschedule_WhenPreviousDateExistsAndChanges()
|
|
{
|
|
Assert.True(WorkOrderBoardMutationRules.IsReschedule(
|
|
new DateTime(2026, 6, 20),
|
|
new DateTime(2026, 6, 25)));
|
|
Assert.False(WorkOrderBoardMutationRules.IsReschedule(
|
|
null,
|
|
new DateTime(2026, 6, 25)));
|
|
}
|
|
}
|