修复 TypeScript 基线并补齐测试类型

This commit is contained in:
2026-03-03 12:21:02 +08:00
parent 673dc1177e
commit 52b87abee3
9 changed files with 36 additions and 21 deletions
+9 -9
View File
@@ -20,7 +20,7 @@ beforeEach(() => {
describe("POST /api/blindbox/draw", () => {
it("draws a random idea", async () => {
prismaMock.$transaction.mockImplementation(async (fn: (tx: unknown) => Promise<unknown>) => {
prismaMock.$transaction.mockImplementation((async (fn: unknown) => {
const tx = {
blindBoxIdea: {
findMany: vi.fn().mockResolvedValue([{ id: "idea-1" }]),
@@ -34,8 +34,8 @@ describe("POST /api/blindbox/draw", () => {
}),
},
};
return fn(tx);
});
return (fn as (txArg: typeof tx) => Promise<unknown>)(tx);
}) as never);
const req = createRequest("/api/blindbox/draw", {
method: "POST",
@@ -52,7 +52,7 @@ describe("POST /api/blindbox/draw", () => {
});
it("returns 404 when pool is empty", async () => {
prismaMock.$transaction.mockImplementation(async (fn: (tx: unknown) => Promise<unknown>) => {
prismaMock.$transaction.mockImplementation((async (fn: unknown) => {
const tx = {
blindBoxIdea: {
findMany: vi.fn().mockResolvedValue([]),
@@ -60,8 +60,8 @@ describe("POST /api/blindbox/draw", () => {
findUnique: vi.fn(),
},
};
return fn(tx);
});
return (fn as (txArg: typeof tx) => Promise<unknown>)(tx);
}) as never);
const req = createRequest("/api/blindbox/draw", {
method: "POST",
@@ -72,7 +72,7 @@ describe("POST /api/blindbox/draw", () => {
});
it("returns 409 on race condition (count=0)", async () => {
prismaMock.$transaction.mockImplementation(async (fn: (tx: unknown) => Promise<unknown>) => {
prismaMock.$transaction.mockImplementation((async (fn: unknown) => {
const tx = {
blindBoxIdea: {
findMany: vi.fn().mockResolvedValue([{ id: "idea-1" }]),
@@ -80,8 +80,8 @@ describe("POST /api/blindbox/draw", () => {
findUnique: vi.fn(),
},
};
return fn(tx);
});
return (fn as (txArg: typeof tx) => Promise<unknown>)(tx);
}) as never);
const req = createRequest("/api/blindbox/draw", {
method: "POST",
@@ -45,8 +45,8 @@ describe("POST /api/blindbox/plan/stream", () => {
onProgress?.("正在生成行程...");
return {
id: "plan-1",
days: [{ date: "周六", items: [] }],
createdAt: new Date(),
days: [{ date: "周六", items: [], summary: "轻松逛吃" }],
createdAt: "2025-03-01T09:00:00.000Z",
};
});
@@ -22,6 +22,7 @@ import { getAuthUserId } from "@/lib/auth";
const mockSuggestAlternativeItems = vi.mocked(suggestAlternativeItems);
const mockSearchPois = vi.mocked(searchPois);
const mockGetAuthUserId = vi.mocked(getAuthUserId);
const mockCtx = { params: Promise.resolve({}) };
beforeEach(() => {
vi.clearAllMocks();
@@ -35,7 +36,7 @@ describe("POST /api/blindbox/plan/suggest-item", () => {
method: "POST",
body: { activity: "看展" },
});
const res = await POST(req);
const res = await POST(req, mockCtx);
expect(res.status).toBe(401);
});
@@ -65,7 +66,7 @@ describe("POST /api/blindbox/plan/suggest-item", () => {
location: "121.47,31.23",
},
});
const res = await POST(req);
const res = await POST(req, mockCtx);
const { status, data } = await parseJsonResponse(res);
expect(status).toBe(200);
+2 -2
View File
@@ -36,9 +36,9 @@ describe("GET /api/blindbox/rooms", () => {
},
] as never);
prismaMock.blindBoxIdea.groupBy.mockResolvedValue([
prismaMock.blindBoxIdea.groupBy = vi.fn().mockResolvedValue([
{ roomId: "bb-room-1", _count: 3 },
] as never);
]) as never;
const req = createRequest("/api/blindbox/rooms");
const res = await GET(req, mockCtx);
+5 -1
View File
@@ -46,6 +46,8 @@ vi.mock("@/hooks/useRoomPolling", () => ({
users: ["user-1", "user-2"],
userProfiles: {},
scene: "eat",
isLoading: false,
error: undefined,
}),
}));
@@ -114,11 +116,13 @@ describe("RoomPage", () => {
restaurants: [],
notFound: true,
mutate: vi.fn(),
creatorId: null,
creatorId: "",
locked: false,
users: [],
userProfiles: {},
scene: "eat",
isLoading: false,
error: undefined,
});
renderPage();