61 lines
1.7 KiB
TypeScript
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,
|
|
});
|
|
});
|
|
});
|