From e718493ae6c39ab0d5fcd238ebb04bca5afc347c Mon Sep 17 00:00:00 2001 From: Gustavo Madeira Santana Date: Thu, 2 Apr 2026 00:53:26 -0400 Subject: [PATCH] test(matrix): cover draft overflow fallback --- .../matrix/src/matrix/monitor/handler.test.ts | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/extensions/matrix/src/matrix/monitor/handler.test.ts b/extensions/matrix/src/matrix/monitor/handler.test.ts index a792bf9919a..32ecc96cc2e 100644 --- a/extensions/matrix/src/matrix/monitor/handler.test.ts +++ b/extensions/matrix/src/matrix/monitor/handler.test.ts @@ -1849,6 +1849,35 @@ describe("matrix monitor handler draft streaming", () => { expect(deliverMatrixRepliesMock).toHaveBeenCalledTimes(1); await finish(); }); + + it("redacts stale draft and sends the final once when a later preview exceeds the event limit", async () => { + const { dispatch, redactEventMock } = createStreamingHarness(); + const { deliver, opts, finish } = await dispatch(); + + opts.onPartialReply?.({ text: "1234" }); + await vi.waitFor(() => { + expect(sendSingleTextMessageMatrixMock).toHaveBeenCalledTimes(1); + }); + + prepareMatrixSingleTextMock.mockImplementation((text: string) => { + const trimmedText = text.trim(); + return { + trimmedText, + convertedText: trimmedText, + singleEventLimit: 5, + fitsInSingleEvent: trimmedText.length <= 5, + }; + }); + + opts.onPartialReply?.({ text: "123456" }); + await deliver({ text: "123456" }, { kind: "final" }); + + expect(editMessageMatrixMock).not.toHaveBeenCalled(); + expect(redactEventMock).toHaveBeenCalledWith("!room:example.org", "$draft1"); + expect(deliverMatrixRepliesMock).toHaveBeenCalledTimes(1); + expect(sendSingleTextMessageMatrixMock).toHaveBeenCalledTimes(1); + await finish(); + }); }); describe("matrix monitor handler block streaming config", () => {