From 7ecc105c3d2d85c130835229b00a6b5ac6819471 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sun, 15 Feb 2026 15:20:31 +0000 Subject: [PATCH] refactor(test): dedupe monitor inbox quoted reply checks --- ...tor-inbox.streams-inbound-messages.test.ts | 153 +++++++----------- 1 file changed, 60 insertions(+), 93 deletions(-) diff --git a/src/web/monitor-inbox.streams-inbound-messages.test.ts b/src/web/monitor-inbox.streams-inbound-messages.test.ts index a274aa346..88954f7d2 100644 --- a/src/web/monitor-inbox.streams-inbound-messages.test.ts +++ b/src/web/monitor-inbox.streams-inbound-messages.test.ts @@ -13,6 +13,55 @@ import { describe("web monitor inbox", () => { installWebMonitorInboxUnitTestHooks(); + async function tick() { + await new Promise((resolve) => setImmediate(resolve)); + } + + async function expectQuotedReplyContext(quotedMessage: unknown) { + const onMessage = vi.fn(async (msg) => { + await msg.reply("pong"); + }); + + const listener = await monitorWebInbox({ verbose: false, onMessage }); + const sock = getSock(); + const upsert = { + type: "notify", + messages: [ + { + key: { id: "abc", fromMe: false, remoteJid: "999@s.whatsapp.net" }, + message: { + extendedTextMessage: { + text: "reply", + contextInfo: { + stanzaId: "q1", + participant: "111@s.whatsapp.net", + quotedMessage, + }, + }, + }, + messageTimestamp: 1_700_000_000, + pushName: "Tester", + }, + ], + }; + + sock.ev.emit("messages.upsert", upsert); + await tick(); + + expect(onMessage).toHaveBeenCalledWith( + expect.objectContaining({ + replyToId: "q1", + replyToBody: "original", + replyToSender: "+111", + }), + ); + expect(sock.sendMessage).toHaveBeenCalledWith("999@s.whatsapp.net", { + text: "pong", + }); + + await listener.close(); + } + it("streams inbound messages", async () => { const onMessage = vi.fn(async (msg) => { await msg.sendComposing(); @@ -40,7 +89,7 @@ describe("web monitor inbox", () => { }; sock.ev.emit("messages.upsert", upsert); - await new Promise((resolve) => setImmediate(resolve)); + await tick(); expect(onMessage).toHaveBeenCalledWith( expect.objectContaining({ body: "ping", from: "+999", to: "+123" }), @@ -88,7 +137,7 @@ describe("web monitor inbox", () => { sock.ev.emit("messages.upsert", upsert); sock.ev.emit("messages.upsert", upsert); - await new Promise((resolve) => setImmediate(resolve)); + await tick(); expect(onMessage).toHaveBeenCalledTimes(1); @@ -122,7 +171,7 @@ describe("web monitor inbox", () => { }; sock.ev.emit("messages.upsert", upsert); - await new Promise((resolve) => setImmediate(resolve)); + await tick(); expect(getPNForLID).toHaveBeenCalledWith("999@lid"); expect(onMessage).toHaveBeenCalledWith( @@ -162,7 +211,7 @@ describe("web monitor inbox", () => { }; sock.ev.emit("messages.upsert", upsert); - await new Promise((resolve) => setImmediate(resolve)); + await tick(); expect(onMessage).toHaveBeenCalledWith( expect.objectContaining({ body: "ping", from: "+1555", to: "+123" }), @@ -203,7 +252,7 @@ describe("web monitor inbox", () => { }; sock.ev.emit("messages.upsert", upsert); - await new Promise((resolve) => setImmediate(resolve)); + await tick(); expect(getPNForLID).toHaveBeenCalledWith("444@lid"); expect(onMessage).toHaveBeenCalledWith( @@ -252,7 +301,7 @@ describe("web monitor inbox", () => { }; sock.ev.emit("messages.upsert", upsert); - await new Promise((resolve) => setImmediate(resolve)); + await tick(); expect(onMessage).toHaveBeenCalledTimes(2); @@ -261,96 +310,14 @@ describe("web monitor inbox", () => { }); it("captures reply context from quoted messages", async () => { - const onMessage = vi.fn(async (msg) => { - await msg.reply("pong"); - }); - - const listener = await monitorWebInbox({ verbose: false, onMessage }); - const sock = getSock(); - const upsert = { - type: "notify", - messages: [ - { - key: { id: "abc", fromMe: false, remoteJid: "999@s.whatsapp.net" }, - message: { - extendedTextMessage: { - text: "reply", - contextInfo: { - stanzaId: "q1", - participant: "111@s.whatsapp.net", - quotedMessage: { conversation: "original" }, - }, - }, - }, - messageTimestamp: 1_700_000_000, - pushName: "Tester", - }, - ], - }; - - sock.ev.emit("messages.upsert", upsert); - await new Promise((resolve) => setImmediate(resolve)); - - expect(onMessage).toHaveBeenCalledWith( - expect.objectContaining({ - replyToId: "q1", - replyToBody: "original", - replyToSender: "+111", - }), - ); - expect(sock.sendMessage).toHaveBeenCalledWith("999@s.whatsapp.net", { - text: "pong", - }); - - await listener.close(); + await expectQuotedReplyContext({ conversation: "original" }); }); it("captures reply context from wrapped quoted messages", async () => { - const onMessage = vi.fn(async (msg) => { - await msg.reply("pong"); + await expectQuotedReplyContext({ + viewOnceMessageV2Extension: { + message: { conversation: "original" }, + }, }); - - const listener = await monitorWebInbox({ verbose: false, onMessage }); - const sock = getSock(); - const upsert = { - type: "notify", - messages: [ - { - key: { id: "abc", fromMe: false, remoteJid: "999@s.whatsapp.net" }, - message: { - extendedTextMessage: { - text: "reply", - contextInfo: { - stanzaId: "q1", - participant: "111@s.whatsapp.net", - quotedMessage: { - viewOnceMessageV2Extension: { - message: { conversation: "original" }, - }, - }, - }, - }, - }, - messageTimestamp: 1_700_000_000, - pushName: "Tester", - }, - ], - }; - - sock.ev.emit("messages.upsert", upsert); - await new Promise((resolve) => setImmediate(resolve)); - - expect(onMessage).toHaveBeenCalledWith( - expect.objectContaining({ - replyToId: "q1", - replyToBody: "original", - replyToSender: "+111", - }), - ); - expect(sock.sendMessage).toHaveBeenCalledWith("999@s.whatsapp.net", { - text: "pong", - }); - - await listener.close(); }); });