From e1cd9275dcb1dfdacc892b18fe51c9d07bcb766a Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Tue, 12 May 2026 02:49:14 +0100 Subject: [PATCH] test: guard discord message process mock calls --- .../monitor/message-handler.process.test.ts | 54 +++++++++++-------- 1 file changed, 32 insertions(+), 22 deletions(-) diff --git a/extensions/discord/src/monitor/message-handler.process.test.ts b/extensions/discord/src/monitor/message-handler.process.test.ts index 2bdcfbc5cea..ae07f81e39d 100644 --- a/extensions/discord/src/monitor/message-handler.process.test.ts +++ b/extensions/discord/src/monitor/message-handler.process.test.ts @@ -452,6 +452,24 @@ function requireRecord(value: unknown, label: string): Record { return value as Record; } +type MockWithCalls = { mock: { calls: unknown[][] } }; + +function firstMockCall(mock: MockWithCalls, label: string): unknown[] { + const call = mock.mock.calls.at(0); + if (!call) { + throw new Error(`missing ${label} call`); + } + return call; +} + +function firstMockArg(mock: MockWithCalls, label: string) { + return firstMockCall(mock, label)[0]; +} + +function firstDispatchParams(): DispatchInboundParams { + return firstMockArg(dispatchInboundMessage, "dispatchInboundMessage") as DispatchInboundParams; +} + function expectRecordFields(record: Record, fields: Record) { for (const [key, value] of Object.entries(fields)) { expect(record[key]).toEqual(value); @@ -560,10 +578,7 @@ function createMockDraftStreamForTest() { } function expectPreviewEditContent(content: string) { - const call = editMessageDiscord.mock.calls[0] as unknown[] | undefined; - if (!call) { - throw new Error("missing preview edit call"); - } + const call = firstMockCall(editMessageDiscord, "preview edit"); expect(call[0]).toBe("c1"); expect(call[1]).toBe("preview-1"); expect(call[2]).toEqual({ content }); @@ -655,11 +670,14 @@ describe("processDiscordMessage ack reactions", () => { expect(sendMocks.reactMessageDiscord).toHaveBeenCalled(); const feedbackOptions = requireRecord( - sendMocks.reactMessageDiscord.mock.calls[0]?.[3], + requireReactionCall(sendMocks.reactMessageDiscord, 0)[3], "feedback reaction options", ); expect(feedbackOptions.rest).toBe(feedbackRest); - const deliveryParams = requireRecord(deliverDiscordReply.mock.calls[0]?.[0], "delivery params"); + const deliveryParams = requireRecord( + firstMockArg(deliverDiscordReply, "deliverDiscordReply"), + "delivery params", + ); expect(deliveryParams.rest).toBe(deliveryRest); expect(feedbackRest).not.toBe(deliveryRest); }); @@ -753,12 +771,10 @@ describe("processDiscordMessage ack reactions", () => { await runProcessDiscordMessage(ctx); await vi.runAllTimersAsync(); - const resolveCall = discordTargetMocks.resolveDiscordTargetChannelId.mock.calls[0] as - | unknown[] - | undefined; - if (!resolveCall) { - throw new Error("missing Discord target resolve call"); - } + const resolveCall = firstMockCall( + discordTargetMocks.resolveDiscordTargetChannelId, + "resolveDiscordTargetChannelId", + ); expect(resolveCall[0]).toBe("user:u1"); expect(requireRecord(resolveCall[1], "Discord target resolve options").accountId).toBe( "default", @@ -1553,9 +1569,7 @@ describe("processDiscordMessage draft streaming", () => { await runProcessDiscordMessage(ctx); expect(draftStream.update).toHaveBeenCalledWith("Hello"); - expect(dispatchInboundMessage.mock.calls[0]?.[0]?.replyOptions?.disableBlockStreaming).toBe( - true, - ); + expect(firstDispatchParams().replyOptions?.disableBlockStreaming).toBe(true); }); it("keeps progress label visible when Discord tool progress lines are disabled", async () => { @@ -1586,10 +1600,8 @@ describe("processDiscordMessage draft streaming", () => { expect(draftStream.update).toHaveBeenCalledWith("Shelling"); expect(draftStream.flush).toHaveBeenCalledTimes(1); expect( - requireRecord( - dispatchInboundMessage.mock.calls[0]?.[0]?.replyOptions, - "dispatch reply options", - ).suppressDefaultToolProgressMessages, + requireRecord(firstDispatchParams().replyOptions, "dispatch reply options") + .suppressDefaultToolProgressMessages, ).toBe(true); }); @@ -1879,9 +1891,7 @@ describe("processDiscordMessage draft streaming", () => { await runProcessDiscordMessage(ctx); - expect( - dispatchInboundMessage.mock.calls[0]?.[0]?.replyOptions?.suppressDefaultToolProgressMessages, - ).toBe(true); + expect(firstDispatchParams().replyOptions?.suppressDefaultToolProgressMessages).toBe(true); }); it("strips reply tags from preview partials", async () => {