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