Files
CapaKraken/packages/api/src/__tests__/timeline-project-query-support.test.ts
T

40 lines
1.2 KiB
TypeScript

import { TRPCError } from "@trpc/server";
import { describe, expect, it, vi } from "vitest";
import {
findTimelineProjectOrThrow,
timelineBudgetStatusProjectSelect,
} from "../router/timeline-project-query-support.js";
describe("timeline project query support", () => {
it("loads a project with the requested select", async () => {
const project = { id: "project_1", name: "Project One", budgetCents: 120000 };
const findUnique = vi.fn().mockResolvedValue(project);
await expect(findTimelineProjectOrThrow({
project: { findUnique },
} as never, {
projectId: "project_1",
select: timelineBudgetStatusProjectSelect,
})).resolves.toEqual(project);
expect(findUnique).toHaveBeenCalledWith({
where: { id: "project_1" },
select: timelineBudgetStatusProjectSelect,
});
});
it("throws a not found error when the project does not exist", async () => {
const findUnique = vi.fn().mockResolvedValue(null);
await expect(findTimelineProjectOrThrow({
project: { findUnique },
} as never, {
projectId: "missing_project",
select: timelineBudgetStatusProjectSelect,
})).rejects.toThrowError(new TRPCError({
code: "NOT_FOUND",
message: "Project not found",
}));
});
});