fix(ci): repair tsgo test harnesses

This commit is contained in:
Peter Steinberger
2026-04-06 17:15:24 +01:00
parent c01b4981af
commit 5d7a73380f
9 changed files with 47 additions and 22 deletions

View File

@@ -29,18 +29,25 @@ vi.spyOn(replyRuntimeModule, "dispatchInboundMessageWithBufferedDispatcher").moc
(...args) => dispatchMock(...args) as never,
);
const conversationRuntimeModule = await import("openclaw/plugin-sdk/conversation-runtime");
type ReadChannelAllowFromStore = typeof conversationRuntimeModule.readChannelAllowFromStore;
type UpsertChannelPairingRequest = typeof conversationRuntimeModule.upsertChannelPairingRequest;
function createPairingStoreMocks() {
return {
readChannelAllowFromStore(...args: unknown[]) {
return readAllowFromStoreMock(...args);
readChannelAllowFromStore(
...args: Parameters<ReadChannelAllowFromStore>
): ReturnType<ReadChannelAllowFromStore> {
return readAllowFromStoreMock(...args) as ReturnType<ReadChannelAllowFromStore>;
},
upsertChannelPairingRequest(...args: unknown[]) {
return upsertPairingRequestMock(...args);
upsertChannelPairingRequest(
...args: Parameters<UpsertChannelPairingRequest>
): ReturnType<UpsertChannelPairingRequest> {
return upsertPairingRequestMock(...args) as ReturnType<UpsertChannelPairingRequest>;
},
};
}
const conversationRuntimeModule = await import("openclaw/plugin-sdk/conversation-runtime");
const pairingStoreMocks = createPairingStoreMocks();
vi.spyOn(conversationRuntimeModule, "readChannelAllowFromStore").mockImplementation((...args) =>
pairingStoreMocks.readChannelAllowFromStore(...args),

View File

@@ -1,5 +1,6 @@
import type { MockFn } from "openclaw/plugin-sdk/testing";
import { vi } from "vitest";
import type { DiscordInboundWorkerTestingHooks } from "./inbound-worker.js";
export const preflightDiscordMessageMock: MockFn = vi.fn();
export const processDiscordMessageMock: MockFn = vi.fn();
@@ -7,6 +8,15 @@ export const deliverDiscordReplyMock: MockFn = vi.fn(async () => undefined);
const { createDiscordMessageHandler: createRealDiscordMessageHandler } =
await import("./message-handler.js");
type DiscordMessageHandlerParams = Parameters<typeof createRealDiscordMessageHandler>[0];
type DiscordMessageHandlerTestingHooks = NonNullable<DiscordMessageHandlerParams["__testing"]>;
type PreflightDiscordMessageHook = NonNullable<
DiscordMessageHandlerTestingHooks["preflightDiscordMessage"]
>;
type ProcessDiscordMessageHook = NonNullable<
DiscordInboundWorkerTestingHooks["processDiscordMessage"]
>;
type DeliverDiscordReplyHook = NonNullable<DiscordInboundWorkerTestingHooks["deliverDiscordReply"]>;
export function createDiscordMessageHandler(
...args: Parameters<typeof createRealDiscordMessageHandler>
@@ -16,9 +26,9 @@ export function createDiscordMessageHandler(
...params,
__testing: {
...params.__testing,
preflightDiscordMessage: preflightDiscordMessageMock,
processDiscordMessage: processDiscordMessageMock,
deliverDiscordReply: deliverDiscordReplyMock,
preflightDiscordMessage: preflightDiscordMessageMock as PreflightDiscordMessageHook,
processDiscordMessage: processDiscordMessageMock as ProcessDiscordMessageHook,
deliverDiscordReply: deliverDiscordReplyMock as DeliverDiscordReplyHook,
},
});
}

View File

@@ -122,7 +122,9 @@ vi.mock("openclaw/plugin-sdk/reply-runtime", async () => {
waitForIdle?: () => Promise<void>;
};
}) => {
const resolved = await replyMock(params.ctx, {}, params.cfg);
const resolved = (await replyMock(params.ctx, {}, params.cfg)) as
| { text?: string }
| undefined;
const text = typeof resolved?.text === "string" ? resolved.text.trim() : "";
if (text) {
params.dispatcher.sendFinalReply({ text });