/**
* confirm-dialog.test.tsx — Tests for the ConfirmDialog Ink component.
*
* The ConfirmDialog shows a yes/no prompt with arrow key navigation.
* Used for "Enhance profile with AI?" and "Run genesis planner?" prompts.
*
* Tests verify:
* - Renders the title text
* - Renders the message text
* - Renders "Yes" and "No" options
* - Renders navigation hints
* - Renders without crashing
* - Default selection is "Yes"
*/
import { describe, test, expect } from "bun:test";
import React from "react";
import { renderToString } from "ink";
import { ConfirmDialog, type ConfirmDialogProps } from "./confirm-dialog";
// ---------------------------------------------------------------------------
// Static render tests (renderToString)
// ---------------------------------------------------------------------------
describe("ConfirmDialog (static rendering)", () => {
const defaultProps: ConfirmDialogProps = {
title: "LLM Synthesis",
message: "Enhance profile with AI?",
onConfirm: () => {},
onCancel: () => {},
};
test("renders the title", () => {
const output = renderToString();
expect(output).toContain("LLM Synthesis");
});
test("renders the message", () => {
const output = renderToString();
expect(output).toContain("Enhance profile with AI?");
});
test("renders Yes option", () => {
const output = renderToString();
expect(output).toContain("Yes");
});
test("renders No option", () => {
const output = renderToString();
expect(output).toContain("No");
});
test("renders navigation hint", () => {
const output = renderToString();
expect(output).toContain("Enter");
});
test("renders without crashing", () => {
expect(() =>
renderToString(),
).not.toThrow();
});
test("renders with custom title", () => {
const output = renderToString(
,
);
expect(output).toContain("Genesis Planner");
expect(output).toContain("Run genesis planner");
});
});