shoc-frontend-new/src/test/domain/work-orders/utils/format-board-audit-action.test.ts

104 lines
2.8 KiB
TypeScript
Raw Normal View History

import { describe, expect, it } from "vitest";
import { formatBoardAuditAction } from "@/domain/work-orders/utils/format-board-audit-action";
describe("formatBoardAuditAction", () => {
it("keeps human sentences from action as-is", () => {
expect(
formatBoardAuditAction({
action: 'Changed status to "Incomplete"',
fieldName: "",
oldValue: "",
newValue: "",
}),
).toBe('Changed status to "Incomplete"');
});
it("formats lifecycle status from field/newValue", () => {
expect(
formatBoardAuditAction({
action: "StatusChanged",
fieldName: "LifecycleStatus",
oldValue: "Scheduled",
newValue: "Incomplete",
}),
).toBe('Changed status to "Incomplete"');
});
it("formats WeekRolled / CarriedOver with increment", () => {
expect(
formatBoardAuditAction({
action: "WeekRolled",
fieldName: "CarriedOver",
oldValue: "0",
newValue: "1",
}),
).toBe("Carried over to the next week (increment #1)");
});
it("formats schedule changes", () => {
expect(
formatBoardAuditAction({
action: "Rescheduled",
fieldName: "ScheduledDate",
oldValue: "2026-07-10",
newValue: "2026-07-16",
}),
).toBe('Changed schedule to "07/16/2026"');
});
it("formats appt time ISO range as mm/dd/yyyy", () => {
expect(
formatBoardAuditAction({
action: "ApptTimeChanged",
fieldName: "ApptTime",
oldValue: "",
newValue: "2026-07-13T05:30:00.0000000|2026-07-13T07:00:00.0000000",
}),
).toBe('Changed appt time to "07/13/2026"');
});
it("formats past due system message", () => {
expect(
formatBoardAuditAction({
action: "MarkedPastDue",
fieldName: "IsPastDue",
oldValue: "false",
newValue: "true",
}),
).toBe("WO marked as Past Due. Due date has passed without completion.");
});
it("falls back to from → to for unknown fields", () => {
expect(
formatBoardAuditAction({
action: "FieldPatched",
fieldName: "VendorNte",
oldValue: "100",
newValue: "250",
}),
).toBe('Changed vendor nte from "100" to "250"');
});
it("formats JSON array values as comma-separated quoted items", () => {
expect(
formatBoardAuditAction({
action: "FieldPatched",
fieldName: "ExtraServices",
oldValue: "",
newValue: '["Other","Installation","Preventive Maintenance"]',
}),
).toBe('Changed extra services to "Other", "Installation", "Preventive Maintenance"');
});
it("falls back to Updated work order when empty", () => {
expect(
formatBoardAuditAction({
action: "",
fieldName: "Something",
oldValue: "",
newValue: "",
}),
).toBe("Updated work order");
});
});