refactor(api): extract timeline project query and read helpers
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
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",
|
||||
}));
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user