Files
Nexus/packages/api/src/__tests__/timeline-allocation-batch-shift-support.test.ts
T

61 lines
1.7 KiB
TypeScript

import { describe, expect, it } from "vitest";
import {
buildTimelineBatchShiftAuditChanges,
shiftTimelineAllocationWindow,
} from "../router/timeline-allocation-batch-shift-support.js";
describe("timeline allocation batch shift support", () => {
it("shifts and clamps allocation windows for each batch-shift mode", () => {
expect(
shiftTimelineAllocationWindow({
startDate: new Date("2026-04-10T00:00:00.000Z"),
endDate: new Date("2026-04-12T00:00:00.000Z"),
daysDelta: 2,
mode: "move",
}),
).toEqual({
startDate: new Date("2026-04-12T00:00:00.000Z"),
endDate: new Date("2026-04-14T00:00:00.000Z"),
});
expect(
shiftTimelineAllocationWindow({
startDate: new Date("2026-04-10T00:00:00.000Z"),
endDate: new Date("2026-04-12T00:00:00.000Z"),
daysDelta: 5,
mode: "resize-start",
}),
).toEqual({
startDate: new Date("2026-04-12T00:00:00.000Z"),
endDate: new Date("2026-04-12T00:00:00.000Z"),
});
expect(
shiftTimelineAllocationWindow({
startDate: new Date("2026-04-10T00:00:00.000Z"),
endDate: new Date("2026-04-12T00:00:00.000Z"),
daysDelta: -5,
mode: "resize-end",
}),
).toEqual({
startDate: new Date("2026-04-10T00:00:00.000Z"),
endDate: new Date("2026-04-10T00:00:00.000Z"),
});
});
it("builds batch-shift audit payloads", () => {
expect(
buildTimelineBatchShiftAuditChanges({
mode: "move",
daysDelta: 3,
count: 2,
}),
).toEqual({
operation: "batchShift",
mode: "move",
daysDelta: 3,
count: 2,
});
});
});