47 lines
1.4 KiB
TypeScript
47 lines
1.4 KiB
TypeScript
import { describe, expect, test } from "vitest";
|
|
import type { Args } from "../src/cli/args.js";
|
|
import { buildInitialMessage } from "../src/cli/initial-message.js";
|
|
|
|
function createArgs(messages: string[] = []): Args {
|
|
return {
|
|
messages: [...messages],
|
|
fileArgs: [],
|
|
unknownFlags: new Map(),
|
|
};
|
|
}
|
|
|
|
describe("buildInitialMessage", () => {
|
|
test("merges piped stdin with the first CLI message into one prompt", () => {
|
|
const parsed = createArgs(["Summarize the text given"]);
|
|
const result = buildInitialMessage({
|
|
parsed,
|
|
stdinContent: "README contents\n",
|
|
});
|
|
|
|
expect(result.initialMessage).toBe("README contents\nSummarize the text given");
|
|
expect(parsed.messages).toEqual([]);
|
|
});
|
|
|
|
test("uses stdin as the initial prompt when no CLI message is present", () => {
|
|
const parsed = createArgs();
|
|
const result = buildInitialMessage({
|
|
parsed,
|
|
stdinContent: "README contents",
|
|
});
|
|
|
|
expect(result.initialMessage).toBe("README contents");
|
|
expect(parsed.messages).toEqual([]);
|
|
});
|
|
|
|
test("combines stdin, file text, and first CLI message in one prompt", () => {
|
|
const parsed = createArgs(["Explain it", "Second message"]);
|
|
const result = buildInitialMessage({
|
|
parsed,
|
|
stdinContent: "stdin\n",
|
|
fileText: "file\n",
|
|
});
|
|
|
|
expect(result.initialMessage).toBe("stdin\nfile\nExplain it");
|
|
expect(parsed.messages).toEqual(["Second message"]);
|
|
});
|
|
});
|