68 lines
1.9 KiB
TypeScript
68 lines
1.9 KiB
TypeScript
import { describe, expect, it, vi } from "vitest";
|
|
|
|
vi.mock("./client", () => ({
|
|
apiDelete: vi.fn(),
|
|
apiGet: vi.fn(),
|
|
apiPatch: vi.fn(),
|
|
apiPost: vi.fn(),
|
|
}));
|
|
|
|
import { apiDelete, apiGet, apiPatch, apiPost } from "./client";
|
|
import {
|
|
createMemory,
|
|
deleteMemory,
|
|
listMemories,
|
|
updateMemory,
|
|
} from "./memory";
|
|
|
|
describe("memory api", () => {
|
|
it("listMemories GET /memory 支持分页与类型过滤", async () => {
|
|
vi.mocked(apiGet).mockResolvedValue({ items: [], total: 0 });
|
|
await listMemories({ page: 1, page_size: 20, type: "episodic" });
|
|
expect(apiGet).toHaveBeenCalledWith("/memory", {
|
|
page: 1,
|
|
page_size: 20,
|
|
type: "episodic",
|
|
});
|
|
});
|
|
|
|
it("createMemory POST /memory 默认 source=user_explicit", async () => {
|
|
vi.mocked(apiPost).mockResolvedValue({ id: "mem_1" });
|
|
await createMemory({ type: "episodic", title: "测试", content: "内容" });
|
|
expect(apiPost).toHaveBeenCalledWith("/memory", {
|
|
source: "user_explicit",
|
|
type: "episodic",
|
|
title: "测试",
|
|
content: "内容",
|
|
});
|
|
});
|
|
|
|
it("createMemory 支持覆盖 source", async () => {
|
|
vi.mocked(apiPost).mockResolvedValue({ id: "mem_2" });
|
|
await createMemory({
|
|
type: "episodic",
|
|
title: "导入",
|
|
content: "内容",
|
|
source: "conversation",
|
|
});
|
|
expect(apiPost).toHaveBeenCalledWith("/memory", {
|
|
source: "conversation",
|
|
type: "episodic",
|
|
title: "导入",
|
|
content: "内容",
|
|
});
|
|
});
|
|
|
|
it("updateMemory PATCH /memory/:id", async () => {
|
|
vi.mocked(apiPatch).mockResolvedValue({ id: "mem_1" });
|
|
await updateMemory("mem_1", { title: "新标题" });
|
|
expect(apiPatch).toHaveBeenCalledWith("/memory/mem_1", { title: "新标题" });
|
|
});
|
|
|
|
it("deleteMemory DELETE /memory/:id", async () => {
|
|
vi.mocked(apiDelete).mockResolvedValue(undefined);
|
|
await deleteMemory("mem_1");
|
|
expect(apiDelete).toHaveBeenCalledWith("/memory/mem_1");
|
|
});
|
|
});
|