Files
openclaw/src/plugins/setup-registry.runtime.test.ts
T
2026-04-10 17:37:31 +01:00

47 lines
1.4 KiB
TypeScript

import { afterEach, describe, expect, it, vi } from "vitest";
const loadPluginManifestRegistryMock = vi.hoisted(() => vi.fn());
vi.mock("./manifest-registry.js", () => ({
loadPluginManifestRegistry: loadPluginManifestRegistryMock,
}));
afterEach(() => {
loadPluginManifestRegistryMock.mockReset();
});
describe("setup-registry runtime fallback", () => {
it("uses bundled manifest cliBackends when the runtime registry has no match", async () => {
loadPluginManifestRegistryMock.mockReturnValue({
diagnostics: [],
plugins: [
{
id: "openai",
origin: "bundled",
cliBackends: ["Codex-CLI"],
},
{
id: "local",
origin: "workspace",
cliBackends: ["local-cli"],
},
],
});
const { __testing, resolvePluginSetupCliBackendRuntime } =
await import("./setup-registry.runtime.js");
__testing.resetRuntimeState();
__testing.setRuntimeModuleForTest({
resolvePluginSetupCliBackend: () => undefined,
});
expect(resolvePluginSetupCliBackendRuntime({ backend: "codex-cli" })).toEqual({
pluginId: "openai",
backend: { id: "Codex-CLI" },
});
expect(resolvePluginSetupCliBackendRuntime({ backend: "local-cli" })).toBeUndefined();
expect(loadPluginManifestRegistryMock).toHaveBeenCalledTimes(1);
expect(loadPluginManifestRegistryMock).toHaveBeenCalledWith({ cache: true });
});
});