| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- import { describe, expect, it, vi } from "vitest";
- import { createDocumentApi } from "../documentApi";
- import { detail, result, summary } from "./fixtures";
- const page = { items: [summary], page: 1, pageSize: 20, total: 1, totalPages: 1 };
- describe("documentApi", () => {
- it("GET /documents 透传筛选、排序、分页和 AbortSignal", async () => {
- const client = { get: vi.fn().mockResolvedValue(result(page)) };
- const api = createDocumentApi(client);
- const signal = new AbortController().signal;
- const query = { documentType: "MAIN", categoryId: "2", includeDescendants: true, keyword: "应急", updatedFrom: "2026-08-04T01:00:00.000Z", updatedTo: "2026-08-04T10:00:00.000Z", sortBy: "updatedAt" as const, sortDirection: "desc" as const, page: 2, pageSize: 20 };
- await api.list(query, signal);
- expect(client.get).toHaveBeenCalledWith("documents", { query, signal });
- });
- it("GET /documents/{id} 严格解析详情", async () => {
- const client = { get: vi.fn().mockResolvedValue(result(detail)) };
- const api = createDocumentApi(client);
- await expect(api.detail("1")).resolves.toEqual(detail);
- expect(client.get).toHaveBeenCalledWith("documents/1", { signal: undefined });
- });
- it("GET /main-plans/{id}/sub-plans 使用直属子方案路径", async () => {
- const client = { get: vi.fn().mockResolvedValue(result(page)) };
- const api = createDocumentApi(client);
- await api.subPlans("1", { page: 1, pageSize: 20 });
- expect(client.get).toHaveBeenCalledWith("main-plans/1/sub-plans", {
- query: { page: 1, pageSize: 20 },
- signal: undefined,
- });
- });
- it("直属子方案透传状态、时间、排序和分页组合", async () => {
- const client = { get: vi.fn().mockResolvedValue(result(page)) };
- const query = {
- keyword: "通信",
- status: "PUBLISHED" as const,
- updatedFrom: "2026-08-01T00:00:00.000Z",
- updatedTo: "2026-08-04T00:00:00.000Z",
- page: 2,
- pageSize: 20,
- sortBy: "updatedAt" as const,
- sortDirection: "desc" as const,
- };
- await createDocumentApi(client).subPlans("1", query);
- expect(client.get).toHaveBeenCalledWith("main-plans/1/sub-plans", {
- query,
- signal: undefined,
- });
- });
- it("拒绝 number ID 和非 UTC 时间", async () => {
- const client = { get: vi.fn().mockResolvedValue(result({ ...page, items: [{ ...summary, id: 1, updatedAt: "2026-07-23 10:00:00" }] })) };
- await expect(createDocumentApi(client).list({})).rejects.toMatchObject({
- code: "INTERNAL_ERROR",
- requestId: "request-id",
- });
- });
- });
|