diff --git a/extensions/whatsapp/src/test-helpers.ts b/extensions/whatsapp/src/test-helpers.ts index 5587cf9c4f2..3819d8c8f7b 100644 --- a/extensions/whatsapp/src/test-helpers.ts +++ b/extensions/whatsapp/src/test-helpers.ts @@ -252,6 +252,31 @@ function resolveSendableOutboundReplyPartsMock(payload: Record) }; } +function resolveChannelSourceReplyDeliveryModeMock(params: { + cfg: { + messages?: { + visibleReplies?: "automatic" | "message_tool"; + groupChat?: { visibleReplies?: "automatic" | "message_tool" }; + }; + }; + ctx: { ChatType?: string; CommandSource?: "text" | "native" }; + requested?: "automatic" | "message_tool_only"; +}) { + if (params.requested) { + return params.requested; + } + if (params.ctx.CommandSource === "native") { + return "automatic"; + } + const chatType = normalizeLowercaseStringOrEmpty(params.ctx.ChatType); + if (chatType === "group" || chatType === "channel") { + return params.cfg.messages?.groupChat?.visibleReplies === "automatic" + ? "automatic" + : "message_tool_only"; + } + return params.cfg.messages?.visibleReplies === "message_tool" ? "message_tool_only" : "automatic"; +} + function toLocationContextMock(location: unknown) { return { Location: location }; } @@ -445,7 +470,7 @@ vi.mock("./auto-reply/monitor/inbound-dispatch.runtime.js", () => ({ getAgentScopedMediaLocalRoots: () => [] as string[], jidToE164: normalizePhoneLikeToE164, logVerbose: (_msg: string) => undefined, - resolveChannelSourceReplyDeliveryMode: () => undefined, + resolveChannelSourceReplyDeliveryMode: resolveChannelSourceReplyDeliveryModeMock, resolveChunkMode: () => undefined, resolveIdentityNamePrefix: resolveIdentityNamePrefixMock, resolveInboundLastRouteSessionKey: (params: { sessionKey: string }) => params.sessionKey, @@ -479,8 +504,8 @@ vi.mock("./auto-reply/monitor/runtime-api.js", () => ({ normalizeE164: normalizePhoneLikeToE164, readStoreAllowFromForDmPolicy: async () => [] as string[], recordSessionMetaFromInbound: async () => undefined, + resolveChannelSourceReplyDeliveryMode: resolveChannelSourceReplyDeliveryModeMock, resolveChannelContextVisibilityMode: resolveChannelContextVisibilityModeMock, - resolveChannelSourceReplyDeliveryMode: () => undefined, resolveChunkMode: () => undefined, resolveIdentityNamePrefix: resolveIdentityNamePrefixMock, resolveInboundLastRouteSessionKey: (params: { sessionKey: string }) => params.sessionKey,