From 2faceadd0d4fb7b7612b7b1570cccabdb9ad72a1 Mon Sep 17 00:00:00 2001 From: Vignesh Natarajan Date: Sat, 14 Feb 2026 20:56:32 -0800 Subject: [PATCH] test (tui): cover newline preservation in submit and render paths --- src/tui/tui-formatters.test.ts | 18 ++++++++++++++++++ src/tui/tui.submit-handler.test.ts | 24 ++++++++++++++++++++++++ 2 files changed, 42 insertions(+) diff --git a/src/tui/tui-formatters.test.ts b/src/tui/tui-formatters.test.ts index 00ed92710b3..7e2a0bbf27a 100644 --- a/src/tui/tui-formatters.test.ts +++ b/src/tui/tui-formatters.test.ts @@ -45,6 +45,24 @@ describe("extractTextFromMessage", () => { expect(text).toBe("first\nsecond"); }); + it("preserves internal newlines for string content", () => { + const text = extractTextFromMessage({ + role: "assistant", + content: "Line 1\nLine 2\nLine 3", + }); + + expect(text).toBe("Line 1\nLine 2\nLine 3"); + }); + + it("preserves internal newlines for text blocks", () => { + const text = extractTextFromMessage({ + role: "assistant", + content: [{ type: "text", text: "Line 1\nLine 2\nLine 3" }], + }); + + expect(text).toBe("Line 1\nLine 2\nLine 3"); + }); + it("places thinking before content when included", () => { const text = extractTextFromMessage( { diff --git a/src/tui/tui.submit-handler.test.ts b/src/tui/tui.submit-handler.test.ts index a12d9f1145d..3b87cfd770b 100644 --- a/src/tui/tui.submit-handler.test.ts +++ b/src/tui/tui.submit-handler.test.ts @@ -93,4 +93,28 @@ describe("createEditorSubmitHandler", () => { expect(sendMessage).toHaveBeenCalledWith("hello"); expect(editor.addToHistory).toHaveBeenCalledWith("hello"); }); + + it("preserves internal newlines for multiline messages", () => { + const editor = { + setText: vi.fn(), + addToHistory: vi.fn(), + }; + const handleCommand = vi.fn(); + const sendMessage = vi.fn(); + const handleBangLine = vi.fn(); + + const onSubmit = createEditorSubmitHandler({ + editor, + handleCommand, + sendMessage, + handleBangLine, + }); + + onSubmit("Line 1\nLine 2\nLine 3"); + + expect(sendMessage).toHaveBeenCalledWith("Line 1\nLine 2\nLine 3"); + expect(editor.addToHistory).toHaveBeenCalledWith("Line 1\nLine 2\nLine 3"); + expect(handleCommand).not.toHaveBeenCalled(); + expect(handleBangLine).not.toHaveBeenCalled(); + }); });