Spaces:
Configuration error
Configuration error
| import { describe, expect, it, vi } from "vitest"; | |
| import { createEditorSubmitHandler } from "./tui.js"; | |
| describe("createEditorSubmitHandler", () => { | |
| it("routes lines starting with ! to handleBangLine", () => { | |
| 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("!ls"); | |
| expect(handleBangLine).toHaveBeenCalledTimes(1); | |
| expect(handleBangLine).toHaveBeenCalledWith("!ls"); | |
| expect(sendMessage).not.toHaveBeenCalled(); | |
| expect(handleCommand).not.toHaveBeenCalled(); | |
| }); | |
| it("treats a lone ! as a normal message", () => { | |
| 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("!"); | |
| expect(handleBangLine).not.toHaveBeenCalled(); | |
| expect(sendMessage).toHaveBeenCalledTimes(1); | |
| expect(sendMessage).toHaveBeenCalledWith("!"); | |
| }); | |
| it("does not treat leading whitespace before ! as a bang command", () => { | |
| 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(" !ls"); | |
| expect(handleBangLine).not.toHaveBeenCalled(); | |
| expect(sendMessage).toHaveBeenCalledWith("!ls"); | |
| expect(editor.addToHistory).toHaveBeenCalledWith("!ls"); | |
| }); | |
| it("trims normal messages before sending and adding to history", () => { | |
| 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(" hello "); | |
| expect(sendMessage).toHaveBeenCalledWith("hello"); | |
| expect(editor.addToHistory).toHaveBeenCalledWith("hello"); | |
| }); | |
| }); | |