mirror of https://github.com/openclaw/openclaw.git
test(memory-wiki): share plugin test helpers
This commit is contained in:
parent
33926ecef1
commit
cd2f6746f9
|
|
@ -1,35 +1,8 @@
|
|||
import { describe, expect, it, vi } from "vitest";
|
||||
import { createTestPluginApi } from "../../test/helpers/plugins/plugin-api.js";
|
||||
import type { OpenClawPluginApi } from "./api.js";
|
||||
import { describe, expect, it } from "vitest";
|
||||
import plugin from "./index.js";
|
||||
import { createMemoryWikiTestHarness } from "./src/test-helpers.js";
|
||||
|
||||
function createApi() {
|
||||
const registerCli = vi.fn();
|
||||
const registerGatewayMethod = vi.fn();
|
||||
const registerMemoryCorpusSupplement = vi.fn();
|
||||
const registerMemoryPromptSupplement = vi.fn();
|
||||
const registerTool = vi.fn();
|
||||
const api = createTestPluginApi({
|
||||
id: "memory-wiki",
|
||||
name: "Memory Wiki",
|
||||
source: "test",
|
||||
config: {},
|
||||
runtime: {} as OpenClawPluginApi["runtime"],
|
||||
registerCli,
|
||||
registerGatewayMethod,
|
||||
registerMemoryCorpusSupplement,
|
||||
registerMemoryPromptSupplement,
|
||||
registerTool,
|
||||
}) as OpenClawPluginApi;
|
||||
return {
|
||||
api,
|
||||
registerCli,
|
||||
registerGatewayMethod,
|
||||
registerMemoryCorpusSupplement,
|
||||
registerMemoryPromptSupplement,
|
||||
registerTool,
|
||||
};
|
||||
}
|
||||
const { createPluginApi } = createMemoryWikiTestHarness();
|
||||
|
||||
describe("memory-wiki plugin", () => {
|
||||
it("registers prompt supplement, gateway methods, tools, and wiki cli surface", async () => {
|
||||
|
|
@ -40,7 +13,7 @@ describe("memory-wiki plugin", () => {
|
|||
registerMemoryCorpusSupplement,
|
||||
registerMemoryPromptSupplement,
|
||||
registerTool,
|
||||
} = createApi();
|
||||
} = createPluginApi();
|
||||
|
||||
await plugin.register(api);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,26 +1,11 @@
|
|||
import fs from "node:fs/promises";
|
||||
import path from "node:path";
|
||||
import { describe, expect, it, vi } from "vitest";
|
||||
import { createTestPluginApi } from "../../../test/helpers/plugins/plugin-api.js";
|
||||
import type { OpenClawPluginApi } from "../api.js";
|
||||
import { registerMemoryWikiGatewayMethods } from "./gateway.js";
|
||||
import { renderWikiMarkdown } from "./markdown.js";
|
||||
import { createMemoryWikiTestHarness } from "./test-helpers.js";
|
||||
|
||||
const { createTempDir, createVault } = createMemoryWikiTestHarness();
|
||||
|
||||
function createGatewayApi() {
|
||||
const registerGatewayMethod = vi.fn();
|
||||
const api = createTestPluginApi({
|
||||
id: "memory-wiki",
|
||||
name: "Memory Wiki",
|
||||
source: "test",
|
||||
config: {},
|
||||
runtime: {} as OpenClawPluginApi["runtime"],
|
||||
registerGatewayMethod,
|
||||
}) as OpenClawPluginApi;
|
||||
return { api, registerGatewayMethod };
|
||||
}
|
||||
const { createPluginApi, createTempDir, createVault } = createMemoryWikiTestHarness();
|
||||
|
||||
function findGatewayHandler(
|
||||
registerGatewayMethod: ReturnType<typeof vi.fn>,
|
||||
|
|
@ -40,7 +25,7 @@ describe("memory-wiki gateway methods", () => {
|
|||
prefix: "memory-wiki-gateway-",
|
||||
initialize: true,
|
||||
});
|
||||
const { api, registerGatewayMethod } = createGatewayApi();
|
||||
const { api, registerGatewayMethod } = createPluginApi();
|
||||
|
||||
registerMemoryWikiGatewayMethods({ api, config });
|
||||
const handler = findGatewayHandler(registerGatewayMethod, "wiki.status");
|
||||
|
|
@ -68,7 +53,7 @@ describe("memory-wiki gateway methods", () => {
|
|||
prefix: "memory-wiki-gateway-",
|
||||
initialize: true,
|
||||
});
|
||||
const { api, registerGatewayMethod } = createGatewayApi();
|
||||
const { api, registerGatewayMethod } = createPluginApi();
|
||||
await fs.writeFile(
|
||||
path.join(rootDir, "sources", "alpha.md"),
|
||||
renderWikiMarkdown({
|
||||
|
|
@ -101,7 +86,7 @@ describe("memory-wiki gateway methods", () => {
|
|||
const inputRootDir = await createTempDir("memory-wiki-gateway-");
|
||||
const inputPath = path.join(inputRootDir, "alpha-notes.txt");
|
||||
await fs.writeFile(inputPath, "alpha over gateway\n", "utf8");
|
||||
const { api, registerGatewayMethod } = createGatewayApi();
|
||||
const { api, registerGatewayMethod } = createPluginApi();
|
||||
const { config } = await createVault({
|
||||
rootDir: path.join(inputRootDir, "vault"),
|
||||
});
|
||||
|
|
@ -135,7 +120,7 @@ describe("memory-wiki gateway methods", () => {
|
|||
const { config } = await createVault({
|
||||
prefix: "memory-wiki-gateway-",
|
||||
});
|
||||
const { api, registerGatewayMethod } = createGatewayApi();
|
||||
const { api, registerGatewayMethod } = createPluginApi();
|
||||
|
||||
registerMemoryWikiGatewayMethods({ api, config });
|
||||
const handler = findGatewayHandler(registerGatewayMethod, "wiki.apply");
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
import fs from "node:fs/promises";
|
||||
import os from "node:os";
|
||||
import path from "node:path";
|
||||
import { describe, expect, it } from "vitest";
|
||||
import { resolveMemoryWikiConfig } from "./config.js";
|
||||
|
|
@ -10,6 +9,9 @@ import {
|
|||
renderMemoryWikiStatus,
|
||||
resolveMemoryWikiStatus,
|
||||
} from "./status.js";
|
||||
import { createMemoryWikiTestHarness } from "./test-helpers.js";
|
||||
|
||||
const { createVault } = createMemoryWikiTestHarness();
|
||||
|
||||
describe("resolveMemoryWikiStatus", () => {
|
||||
it("reports missing vault and missing requested obsidian cli", async () => {
|
||||
|
|
@ -58,12 +60,10 @@ describe("resolveMemoryWikiStatus", () => {
|
|||
});
|
||||
|
||||
it("counts source provenance from the vault", async () => {
|
||||
const rootDir = await fs.mkdtemp(path.join(os.tmpdir(), "memory-wiki-status-"));
|
||||
await fs.mkdir(path.join(rootDir, "sources"), { recursive: true });
|
||||
await fs.mkdir(path.join(rootDir, "entities"), { recursive: true });
|
||||
await fs.mkdir(path.join(rootDir, "concepts"), { recursive: true });
|
||||
await fs.mkdir(path.join(rootDir, "syntheses"), { recursive: true });
|
||||
await fs.mkdir(path.join(rootDir, "reports"), { recursive: true });
|
||||
const { rootDir, config } = await createVault({
|
||||
prefix: "memory-wiki-status-",
|
||||
initialize: true,
|
||||
});
|
||||
await fs.writeFile(
|
||||
path.join(rootDir, "sources", "native.md"),
|
||||
renderWikiMarkdown({
|
||||
|
|
@ -113,10 +113,6 @@ describe("resolveMemoryWikiStatus", () => {
|
|||
"utf8",
|
||||
);
|
||||
|
||||
const config = resolveMemoryWikiConfig(
|
||||
{ vault: { path: rootDir } },
|
||||
{ homedir: "/Users/tester" },
|
||||
);
|
||||
const status = await resolveMemoryWikiStatus(config, {
|
||||
pathExists: async () => true,
|
||||
resolveCommand: async () => null,
|
||||
|
|
@ -130,8 +126,6 @@ describe("resolveMemoryWikiStatus", () => {
|
|||
unsafeLocal: 1,
|
||||
other: 0,
|
||||
});
|
||||
|
||||
await fs.rm(rootDir, { recursive: true, force: true });
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,9 @@
|
|||
import fs from "node:fs/promises";
|
||||
import os from "node:os";
|
||||
import path from "node:path";
|
||||
import { afterEach } from "vitest";
|
||||
import { afterEach, vi } from "vitest";
|
||||
import { createTestPluginApi } from "../../../test/helpers/plugins/plugin-api.js";
|
||||
import type { OpenClawPluginApi } from "../api.js";
|
||||
import {
|
||||
resolveMemoryWikiConfig,
|
||||
type MemoryWikiPluginConfig,
|
||||
|
|
@ -16,6 +18,15 @@ export type MemoryWikiTestVault = {
|
|||
config: ResolvedMemoryWikiConfig;
|
||||
};
|
||||
|
||||
export type MemoryWikiPluginApiHarness = {
|
||||
api: OpenClawPluginApi;
|
||||
registerCli: ReturnType<typeof vi.fn>;
|
||||
registerGatewayMethod: ReturnType<typeof vi.fn>;
|
||||
registerMemoryCorpusSupplement: ReturnType<typeof vi.fn>;
|
||||
registerMemoryPromptSupplement: ReturnType<typeof vi.fn>;
|
||||
registerTool: ReturnType<typeof vi.fn>;
|
||||
};
|
||||
|
||||
export function createMemoryWikiTestHarness() {
|
||||
const tempDirs: string[] = [];
|
||||
|
||||
|
|
@ -57,7 +68,37 @@ export function createMemoryWikiTestHarness() {
|
|||
return { rootDir, config };
|
||||
}
|
||||
|
||||
function createPluginApi(): MemoryWikiPluginApiHarness {
|
||||
const registerCli = vi.fn();
|
||||
const registerGatewayMethod = vi.fn();
|
||||
const registerMemoryCorpusSupplement = vi.fn();
|
||||
const registerMemoryPromptSupplement = vi.fn();
|
||||
const registerTool = vi.fn();
|
||||
const api = createTestPluginApi({
|
||||
id: "memory-wiki",
|
||||
name: "Memory Wiki",
|
||||
source: "test",
|
||||
config: {},
|
||||
runtime: {} as OpenClawPluginApi["runtime"],
|
||||
registerCli,
|
||||
registerGatewayMethod,
|
||||
registerMemoryCorpusSupplement,
|
||||
registerMemoryPromptSupplement,
|
||||
registerTool,
|
||||
}) as OpenClawPluginApi;
|
||||
|
||||
return {
|
||||
api,
|
||||
registerCli,
|
||||
registerGatewayMethod,
|
||||
registerMemoryCorpusSupplement,
|
||||
registerMemoryPromptSupplement,
|
||||
registerTool,
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
createPluginApi,
|
||||
createTempDir,
|
||||
createVault,
|
||||
};
|
||||
|
|
|
|||
Loading…
Reference in New Issue