40 lines
1.2 KiB
TypeScript
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",
|
|
}));
|
|
});
|
|
});
|