diff --git a/src/plugins/conversation-binding.test.ts b/src/plugins/conversation-binding.test.ts index b34c398cf49..d5a81973d18 100644 --- a/src/plugins/conversation-binding.test.ts +++ b/src/plugins/conversation-binding.test.ts @@ -1,6 +1,6 @@ import fs from "node:fs"; import path from "node:path"; -import { afterAll, beforeEach, describe, expect, it, vi } from "vitest"; +import { afterAll, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import type { ConversationRef, SessionBindingAdapter, @@ -167,6 +167,21 @@ afterAll(() => { cleanupTrackedTempDirs(tempDirs); }); +beforeAll(async () => { + ({ + __testing, + buildPluginBindingApprovalCustomId, + detachPluginConversationBinding, + getCurrentPluginConversationBinding, + parsePluginBindingApprovalCustomId, + requestPluginConversationBinding, + resolvePluginConversationBindingApproval, + } = await import("./conversation-binding.js")); + ({ registerSessionBindingAdapter, unregisterSessionBindingAdapter } = + await import("../infra/outbound/session-binding-service.js")); + ({ setActivePluginRegistry } = await import("./runtime.js")); +}); + function createDiscordCodexBindRequest( conversationId: string, summary: string, @@ -389,44 +404,7 @@ async function expectResolutionDoesNotWait(params: { } describe("plugin conversation binding approvals", () => { - beforeEach(async () => { - vi.resetModules(); - vi.doMock("../infra/home-dir.js", async () => { - const actual = - await vi.importActual("../infra/home-dir.js"); - return { - ...actual, - expandHomePrefix: (value: string) => { - if (value === "~/.openclaw/plugin-binding-approvals.json") { - return approvalsPath; - } - return actual.expandHomePrefix(value); - }, - }; - }); - vi.doMock("./runtime.js", async () => { - const actual = await vi.importActual("./runtime.js"); - return { - ...actual, - getActivePluginRegistry: () => pluginRuntimeState.registry, - getActivePluginChannelRegistry: () => pluginRuntimeState.registry, - setActivePluginRegistry: (registry: PluginRegistry) => { - pluginRuntimeState.registry = registry; - }, - }; - }); - ({ - __testing, - buildPluginBindingApprovalCustomId, - detachPluginConversationBinding, - getCurrentPluginConversationBinding, - parsePluginBindingApprovalCustomId, - requestPluginConversationBinding, - resolvePluginConversationBindingApproval, - } = await import("./conversation-binding.js")); - ({ registerSessionBindingAdapter, unregisterSessionBindingAdapter } = - await import("../infra/outbound/session-binding-service.js")); - ({ setActivePluginRegistry } = await import("./runtime.js")); + beforeEach(() => { sessionBindingState.reset(); __testing.reset(); setActivePluginRegistry(createEmptyPluginRegistry());