import { describe, it, expect, vi } from "vitest"; import { render, screen, fireEvent } from "@testing-library/react"; import { ServiceTestPanel } from "../ServiceTestPanel"; import type { ServiceTestResult } from "../../types"; function noop() {} describe("ServiceTestPanel", () => { it("renders the Test credentials button", () => { render( , ); expect(screen.getByText("Test credentials")).toBeTruthy(); }); it("shows Testing… and disables button while pending", () => { render( , ); expect(screen.getByText("Testing…")).toBeTruthy(); expect(screen.getByText("Testing…")).toBeDisabled(); }); it("renders green ✓ Connected pill with evidence on success", () => { const result: ServiceTestResult = { ok: true, detail: "ok", evidence: "v4.5.0", }; render( , ); expect(screen.getByText(/✓ Connected — v4.5.0/)).toBeTruthy(); }); it("renders red ✗ pill with detail on failure", () => { const result: ServiceTestResult = { ok: false, detail: "Authentication failed", evidence: null, }; render( , ); expect(screen.getByText(/✗ Authentication failed/)).toBeTruthy(); }); it("fires onTest when Test credentials is clicked", () => { const onTest = vi.fn(); render( , ); fireEvent.click(screen.getByText("Test credentials")); expect(onTest).toHaveBeenCalledOnce(); }); it("fires onSaveAnywayChange when checkbox is toggled", () => { const onSaveAnywayChange = vi.fn(); render( , ); const checkbox = screen.getByRole("checkbox"); fireEvent.click(checkbox); expect(onSaveAnywayChange).toHaveBeenCalledWith(true); }); it("renders the Save anyway checkbox", () => { render( , ); expect(screen.getByRole("checkbox")).toBeTruthy(); }); });