refactor(tests): share harnesses for cli and monitor fixtures

This commit is contained in:
Peter Steinberger
2026-02-16 17:06:20 +00:00
parent b991919755
commit c37f65a449
5 changed files with 119 additions and 255 deletions

View File

@@ -5,22 +5,26 @@ import {
shouldEnableWindowsGitBashPasteFallback,
} from "./tui.js";
function createSubmitHarness() {
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,
});
return { editor, handleCommand, sendMessage, handleBangLine, onSubmit };
}
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,
});
const { handleCommand, sendMessage, handleBangLine, onSubmit } = createSubmitHarness();
onSubmit("!ls");
@@ -31,20 +35,7 @@ describe("createEditorSubmitHandler", () => {
});
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,
});
const { sendMessage, handleBangLine, onSubmit } = createSubmitHarness();
onSubmit("!");
@@ -54,20 +45,7 @@ describe("createEditorSubmitHandler", () => {
});
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,
});
const { editor, sendMessage, handleBangLine, onSubmit } = createSubmitHarness();
onSubmit(" !ls");
@@ -77,20 +55,7 @@ describe("createEditorSubmitHandler", () => {
});
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,
});
const { editor, sendMessage, onSubmit } = createSubmitHarness();
onSubmit(" hello ");
@@ -99,20 +64,7 @@ describe("createEditorSubmitHandler", () => {
});
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,
});
const { editor, handleCommand, sendMessage, handleBangLine, onSubmit } = createSubmitHarness();
onSubmit("Line 1\nLine 2\nLine 3");