60 lines
2.1 KiB
TypeScript
60 lines
2.1 KiB
TypeScript
import { describe, expect, it, vi } from "vitest";
|
|
|
|
vi.mock("../sse/event-bus.js", () => ({
|
|
emitProjectShifted: vi.fn(),
|
|
}));
|
|
|
|
vi.mock("../router/timeline-project-load-support.js", () => ({
|
|
loadProjectShiftContext: vi.fn(),
|
|
}));
|
|
|
|
vi.mock("../router/timeline-shift-procedure-support.js", () => ({
|
|
applyTimelineProjectShift: vi.fn(),
|
|
}));
|
|
|
|
import { emitProjectShifted } from "../sse/event-bus.js";
|
|
import { loadProjectShiftContext } from "../router/timeline-project-load-support.js";
|
|
import { applyTimelineProjectShiftMutation } from "../router/timeline-shift-router-support.js";
|
|
import { applyTimelineProjectShift } from "../router/timeline-shift-procedure-support.js";
|
|
|
|
const emitProjectShiftedMock = vi.mocked(emitProjectShifted);
|
|
const loadProjectShiftContextMock = vi.mocked(loadProjectShiftContext);
|
|
const applyTimelineProjectShiftMock = vi.mocked(applyTimelineProjectShift);
|
|
|
|
describe("timeline shift router support", () => {
|
|
it("loads context, applies the shift, emits the event, and returns the response payload", async () => {
|
|
const db = {} as never;
|
|
const context = { project: { id: "project_1" } } as never;
|
|
const result = {
|
|
project: { id: "project_1" },
|
|
validation: { valid: true },
|
|
event: { projectId: "project_1" },
|
|
} as never;
|
|
|
|
loadProjectShiftContextMock.mockResolvedValueOnce(context);
|
|
applyTimelineProjectShiftMock.mockResolvedValueOnce(result);
|
|
|
|
await expect(
|
|
applyTimelineProjectShiftMutation({
|
|
db,
|
|
projectId: "project_1",
|
|
newStartDate: new Date("2026-04-03T00:00:00.000Z"),
|
|
newEndDate: new Date("2026-04-12T00:00:00.000Z"),
|
|
}),
|
|
).resolves.toEqual({
|
|
project: { id: "project_1" },
|
|
validation: { valid: true },
|
|
});
|
|
|
|
expect(loadProjectShiftContextMock).toHaveBeenCalledWith(db, "project_1");
|
|
expect(applyTimelineProjectShiftMock).toHaveBeenCalledWith({
|
|
db,
|
|
projectId: "project_1",
|
|
newStartDate: new Date("2026-04-03T00:00:00.000Z"),
|
|
newEndDate: new Date("2026-04-12T00:00:00.000Z"),
|
|
context,
|
|
});
|
|
expect(emitProjectShiftedMock).toHaveBeenCalledWith({ projectId: "project_1" });
|
|
});
|
|
});
|