import { render, screen } from "@testing-library/react"; import { describe, expect, it } from "vitest"; import Placeholder from "@/components/Placeholder"; import { DEFAULT_MESSAGES } from "@/components/Placeholder/messages"; describe("", () => { it("renders the default message for variant=empty", () => { render(); expect(screen.getByText(DEFAULT_MESSAGES.empty)).toBeInTheDocument(); }); it("renders the default message for variant=loading", () => { render(); expect(screen.getByText(DEFAULT_MESSAGES.loading)).toBeInTheDocument(); }); it("renders the default message for variant=noResults", () => { render(); expect(screen.getByText(DEFAULT_MESSAGES.noResults)).toBeInTheDocument(); }); it("renders the default message for variant=notFound", () => { render(); expect(screen.getByText(DEFAULT_MESSAGES.notFound)).toBeInTheDocument(); }); it("overrides the default message when `message` prop is passed", () => { render(); expect(screen.getByText("Custom copy goes here")).toBeInTheDocument(); expect(screen.queryByText(DEFAULT_MESSAGES.empty)).not.toBeInTheDocument(); }); it("renders the ASCII art inside a
 with aria-hidden", () => {
    const { container } = render();
    const pre = container.querySelector("pre");
    expect(pre).not.toBeNull();
    expect(pre).toHaveAttribute("aria-hidden", "true");
    expect(pre!.textContent!.length).toBeGreaterThan(0);
  });

  it("does not render the credit string in the UI (attribution lives in CREDITS.md)", () => {
    render();
    expect(screen.queryByText(/jgs/)).not.toBeInTheDocument();
  });

  it('applies role="status" and aria-live="polite" ONLY when variant=loading', () => {
    const { rerender, container } = render();
    expect(container.querySelector('[role="status"]')).toBeNull();

    rerender();
    const live = container.querySelector('[role="status"]');
    expect(live).not.toBeNull();
    expect(live).toHaveAttribute("aria-live", "polite");
  });

  it("renders children below the message when provided", () => {
    render(
      
        
      ,
    );
    expect(screen.getByRole("button", { name: "Go home" })).toBeInTheDocument();
  });

  it("merges a custom className onto the outer wrapper", () => {
    const { container } = render();
    expect(container.firstChild).toHaveClass("custom-test-class");
  });
});