openclaw/src/memory/prompt-section.test.ts

65 lines
1.9 KiB
TypeScript

import { describe, it, expect, beforeEach } from "vitest";
import {
registerMemoryPromptSection,
buildMemoryPromptSection,
clearMemoryPromptSection,
_resetMemoryPromptSection,
} from "./prompt-section.js";
describe("memory prompt section registry", () => {
beforeEach(() => {
_resetMemoryPromptSection();
});
it("returns empty array when no builder is registered", () => {
const result = buildMemoryPromptSection({
availableTools: new Set(["memory_search", "memory_get"]),
});
expect(result).toEqual([]);
});
it("delegates to the registered builder", () => {
registerMemoryPromptSection(({ availableTools }) => {
if (!availableTools.has("memory_search")) {
return [];
}
return ["## Custom Memory", "Use custom memory tools.", ""];
});
const result = buildMemoryPromptSection({
availableTools: new Set(["memory_search"]),
});
expect(result).toEqual(["## Custom Memory", "Use custom memory tools.", ""]);
});
it("passes citationsMode to the builder", () => {
registerMemoryPromptSection(({ citationsMode }) => {
return [`citations: ${citationsMode ?? "default"}`];
});
expect(
buildMemoryPromptSection({
availableTools: new Set(),
citationsMode: "off",
}),
).toEqual(["citations: off"]);
});
it("last registration wins", () => {
registerMemoryPromptSection(() => ["first"]);
registerMemoryPromptSection(() => ["second"]);
const result = buildMemoryPromptSection({ availableTools: new Set() });
expect(result).toEqual(["second"]);
});
it("clearMemoryPromptSection resets the builder", () => {
registerMemoryPromptSection(() => ["stale section"]);
expect(buildMemoryPromptSection({ availableTools: new Set() })).toEqual(["stale section"]);
clearMemoryPromptSection();
expect(buildMemoryPromptSection({ availableTools: new Set() })).toEqual([]);
});
});