test(contracts): lazy-load discord thread binding test surface

This commit is contained in:
Vincent Koc 2026-04-03 23:31:37 +09:00
parent 1556490ee7
commit 23d8a979b3
2 changed files with 32 additions and 12 deletions

View File

@ -35,11 +35,21 @@ import {
type SessionBindingContractChannelId,
} from "./manifest.js";
const { discordThreadBindingTesting } = loadBundledPluginTestApiSync<{
discordThreadBindingTesting: {
resetThreadBindingsForTests: () => void;
};
}>("discord");
type DiscordThreadBindingTesting = {
resetThreadBindingsForTests: () => void;
};
let discordThreadBindingTestingCache: DiscordThreadBindingTesting | undefined;
function getDiscordThreadBindingTesting(): DiscordThreadBindingTesting {
if (!discordThreadBindingTestingCache) {
({ discordThreadBindingTesting: discordThreadBindingTestingCache } =
loadBundledPluginTestApiSync<{
discordThreadBindingTesting: DiscordThreadBindingTesting;
}>("discord"));
}
return discordThreadBindingTestingCache;
}
function buildBundledPluginModuleId(pluginId: string, artifactBasename: string): string {
return ["..", "..", "..", "..", "extensions", pluginId, artifactBasename].join("/");
@ -758,7 +768,7 @@ const sessionBindingContractEntries: Record<
enableSweeper: false,
});
manager.stop();
discordThreadBindingTesting.resetThreadBindingsForTests();
getDiscordThreadBindingTesting().resetThreadBindingsForTests();
expectClearedSessionBinding({
channel: "discord",
accountId: "default",

View File

@ -30,11 +30,21 @@ import { __testing as sessionBindingTesting } from "../../../src/infra/outbound/
import { resetPluginRuntimeStateForTest } from "../../../src/plugins/runtime.js";
import { loadBundledPluginTestApiSync } from "../../../src/test-utils/bundled-plugin-public-surface.js";
const { discordThreadBindingTesting } = loadBundledPluginTestApiSync<{
discordThreadBindingTesting: {
resetThreadBindingsForTests: () => void;
};
}>("discord");
type DiscordThreadBindingTesting = {
resetThreadBindingsForTests: () => void;
};
let discordThreadBindingTestingCache: DiscordThreadBindingTesting | undefined;
function getDiscordThreadBindingTesting(): DiscordThreadBindingTesting {
if (!discordThreadBindingTestingCache) {
({ discordThreadBindingTesting: discordThreadBindingTestingCache } =
loadBundledPluginTestApiSync<{
discordThreadBindingTesting: DiscordThreadBindingTesting;
}>("discord"));
}
return discordThreadBindingTestingCache;
}
const { resetTelegramThreadBindingsForTests } = loadBundledPluginTestApiSync<{
resetTelegramThreadBindingsForTests: () => Promise<void>;
}>("telegram");
@ -153,7 +163,7 @@ export function describeSessionBindingRegistryBackedContract(id: string) {
}
setDefaultChannelPluginRegistryForTests();
sessionBindingTesting.resetSessionBindingAdaptersForTests();
discordThreadBindingTesting.resetThreadBindingsForTests();
getDiscordThreadBindingTesting().resetThreadBindingsForTests();
feishuThreadBindingTesting.resetFeishuThreadBindingsForTests();
resetMatrixThreadBindingsForTests();
await resetTelegramThreadBindingsForTests();