Files
hunjing/frontend/src/lib/api/personality.test.ts
T
2026-08-21 16:00:13 +08:00

74 lines
2.3 KiB
TypeScript

import { describe, expect, it, vi } from "vitest";
vi.mock("./client", () => ({
apiGet: vi.fn(),
apiPost: vi.fn(),
apiRequest: vi.fn(),
}));
import { apiGet, apiPost, apiRequest } from "./client";
import {
approveProposal,
getCurrentPersonality,
listPersonalityVersions,
proposeUpdate,
rejectProposal,
rollbackPersonality,
} from "./personality";
describe("personality api", () => {
it("getCurrentPersonality GET /personality/current", async () => {
vi.mocked(apiGet).mockResolvedValue({ id: "pv_1" });
await getCurrentPersonality({ character_id: "char_1" });
expect(apiGet).toHaveBeenCalledWith("/personality/current", {
character_id: "char_1",
});
});
it("proposeUpdate POST /personality/propose-update", async () => {
vi.mocked(apiPost).mockResolvedValue({ id: "prop_1" });
await proposeUpdate({
fields: { expression_style: "简洁清晰" },
reason: "优化表达",
});
expect(apiPost).toHaveBeenCalledWith("/personality/propose-update", {
fields: { expression_style: "简洁清晰" },
reason: "优化表达",
});
});
it("listPersonalityVersions GET /personality/versions", async () => {
vi.mocked(apiGet).mockResolvedValue({ items: [], total: 0 });
await listPersonalityVersions({ page: 1, page_size: 20 });
expect(apiGet).toHaveBeenCalledWith("/personality/versions", {
page: 1,
page_size: 20,
});
});
it("approveProposal POST /personality/proposals/:id/approve", async () => {
vi.mocked(apiPost).mockResolvedValue({ id: "prop_1" });
await approveProposal("prop_1");
expect(apiPost).toHaveBeenCalledWith(
"/personality/proposals/prop_1/approve",
);
});
it("rejectProposal POST /personality/proposals/:id/reject", async () => {
vi.mocked(apiPost).mockResolvedValue({ id: "prop_1" });
await rejectProposal("prop_1");
expect(apiPost).toHaveBeenCalledWith(
"/personality/proposals/prop_1/reject",
);
});
it("rollbackPersonality POST 带 query 参数", async () => {
vi.mocked(apiRequest).mockResolvedValue({ id: "pv_1" });
await rollbackPersonality("pv_1", "char_1");
expect(apiRequest).toHaveBeenCalledWith(
"/personality/versions/pv_1/rollback",
{ method: "POST", query: { character_id: "char_1" } },
);
});
});