Files
openclaw/src/plugin-sdk/memory-host-markdown.test.ts
2026-04-05 22:34:01 +01:00

51 lines
1.5 KiB
TypeScript

import { describe, expect, it } from "vitest";
import { replaceManagedMarkdownBlock, withTrailingNewline } from "./memory-host-markdown.js";
describe("withTrailingNewline", () => {
it("preserves trailing newlines", () => {
expect(withTrailingNewline("hello\n")).toBe("hello\n");
});
it("adds a trailing newline when missing", () => {
expect(withTrailingNewline("hello")).toBe("hello\n");
});
});
describe("replaceManagedMarkdownBlock", () => {
it("appends a managed block when missing", () => {
expect(
replaceManagedMarkdownBlock({
original: "# Title\n",
heading: "## Generated",
startMarker: "<!-- start -->",
endMarker: "<!-- end -->",
body: "- first",
}),
).toBe("# Title\n\n## Generated\n<!-- start -->\n- first\n<!-- end -->\n");
});
it("replaces an existing managed block in place", () => {
expect(
replaceManagedMarkdownBlock({
original:
"# Title\n\n## Generated\n<!-- start -->\n- old\n<!-- end -->\n\n## Notes\nkept\n",
heading: "## Generated",
startMarker: "<!-- start -->",
endMarker: "<!-- end -->",
body: "- new",
}),
).toBe("# Title\n\n## Generated\n<!-- start -->\n- new\n<!-- end -->\n\n## Notes\nkept\n");
});
it("supports headingless blocks", () => {
expect(
replaceManagedMarkdownBlock({
original: "alpha\n",
startMarker: "<!-- start -->",
endMarker: "<!-- end -->",
body: "beta",
}),
).toBe("alpha\n\n<!-- start -->\nbeta\n<!-- end -->\n");
});
});