Files
CapaKraken/packages/api/src/__tests__/timeline-allocation-procedure-support.test.ts
T

63 lines
1.9 KiB
TypeScript

import { beforeEach, describe, expect, it, vi } from "vitest";
vi.mock("../sse/event-bus.js", () => ({
emitAllocationUpdated: vi.fn(),
}));
vi.mock("../router/timeline-allocation-shift-support.js", () => ({
applyTimelineBatchAllocationShift: vi.fn(),
}));
import { emitAllocationUpdated } from "../sse/event-bus.js";
import { shiftTimelineAllocations } from "../router/timeline-allocation-procedure-support.js";
import { applyTimelineBatchAllocationShift } from "../router/timeline-allocation-shift-support.js";
const emitAllocationUpdatedMock = vi.mocked(emitAllocationUpdated);
const applyTimelineBatchAllocationShiftMock = vi.mocked(applyTimelineBatchAllocationShift);
describe("timeline allocation procedure support", () => {
beforeEach(() => {
vi.clearAllMocks();
});
it("applies allocation shifts and emits update events", async () => {
applyTimelineBatchAllocationShiftMock.mockResolvedValueOnce([
{
id: "allocation_1",
projectId: "project_1",
resourceId: "resource_1",
},
{
id: "allocation_2",
projectId: "project_2",
resourceId: "resource_2",
},
] as never);
await expect(
shiftTimelineAllocations({} as never, {
allocationIds: ["allocation_1", "allocation_2"],
daysDelta: 2,
mode: "move",
}),
).resolves.toEqual({ count: 2 });
expect(applyTimelineBatchAllocationShiftMock).toHaveBeenCalledWith({
db: {},
allocationIds: ["allocation_1", "allocation_2"],
daysDelta: 2,
mode: "move",
});
expect(emitAllocationUpdatedMock).toHaveBeenNthCalledWith(1, {
id: "allocation_1",
projectId: "project_1",
resourceId: "resource_1",
});
expect(emitAllocationUpdatedMock).toHaveBeenNthCalledWith(2, {
id: "allocation_2",
projectId: "project_2",
resourceId: "resource_2",
});
});
});