mirror of
https://github.com/openclaw/openclaw.git
synced 2026-06-06 05:51:15 +08:00
57 lines
1.9 KiB
TypeScript
57 lines
1.9 KiB
TypeScript
// Tokenjuice tests cover index plugin behavior.
|
|
import fs from "node:fs";
|
|
import { createTestPluginApi } from "openclaw/plugin-sdk/plugin-test-api";
|
|
import { beforeEach, describe, expect, it, vi } from "vitest";
|
|
|
|
const { tokenjuiceFactory, createTokenjuiceOpenClawEmbeddedExtension } = vi.hoisted(() => {
|
|
const tokenjuiceFactoryLocal = vi.fn();
|
|
const createTokenjuiceOpenClawEmbeddedExtensionLocal = vi.fn(() => tokenjuiceFactoryLocal);
|
|
return {
|
|
tokenjuiceFactory: tokenjuiceFactoryLocal,
|
|
createTokenjuiceOpenClawEmbeddedExtension: createTokenjuiceOpenClawEmbeddedExtensionLocal,
|
|
};
|
|
});
|
|
|
|
vi.mock("./runtime-api.js", () => ({
|
|
createTokenjuiceOpenClawEmbeddedExtension,
|
|
}));
|
|
|
|
import plugin from "./index.js";
|
|
|
|
describe("tokenjuice plugin", () => {
|
|
beforeEach(() => {
|
|
createTokenjuiceOpenClawEmbeddedExtension.mockClear();
|
|
tokenjuiceFactory.mockClear();
|
|
});
|
|
|
|
it("is opt-in by default", () => {
|
|
const manifest = JSON.parse(
|
|
fs.readFileSync(new URL("./openclaw.plugin.json", import.meta.url), "utf8"),
|
|
) as { enabledByDefault?: unknown };
|
|
|
|
expect(manifest.enabledByDefault).toBeUndefined();
|
|
});
|
|
|
|
it("registers tokenjuice tool result middleware for OpenClaw and Codex runtimes", () => {
|
|
const registerAgentToolResultMiddleware = vi.fn();
|
|
|
|
plugin.register(
|
|
createTestPluginApi({
|
|
id: "tokenjuice",
|
|
name: "tokenjuice",
|
|
source: "test",
|
|
config: {},
|
|
pluginConfig: {},
|
|
runtime: {} as never,
|
|
registerAgentToolResultMiddleware,
|
|
}),
|
|
);
|
|
|
|
expect(createTokenjuiceOpenClawEmbeddedExtension).toHaveBeenCalledTimes(1);
|
|
expect(tokenjuiceFactory).toHaveBeenCalledTimes(1);
|
|
const registration = registerAgentToolResultMiddleware.mock.calls[0];
|
|
expect(typeof registration?.[0]).toBe("function");
|
|
expect(registration?.[1]).toEqual({ runtimes: ["openclaw", "codex"] });
|
|
});
|
|
});
|