import "@testing-library/jest-dom"; import { render, screen } from "@testing-library/react"; import Spinner from "./Spinner"; describe("Spinner", () => { test("renders with the default md size class", () => { const { container } = render(); expect(container.firstChild).toHaveClass("spinner-md"); }); test("applies the correct size class", () => { const { container } = render(); expect(container.firstChild).toHaveClass("spinner-lg"); }); test("has role status", () => { render(); expect(screen.getByRole("status")).toBeInTheDocument(); }); test("has the default aria-label", () => { render(); expect(screen.getByRole("status")).toHaveAttribute( "aria-label", "Loading...", ); }); test("uses a custom label when provided", () => { render(); expect(screen.getByRole("status")).toHaveAttribute( "aria-label", "Saving changes...", ); }); test("applies an additional className", () => { const { container } = render(); expect(container.firstChild).toHaveClass("spinner", "my-spinner"); }); test.each(["sm", "md", "lg"])("renders the %s size without error", (size) => { const { container } = render(); expect(container.firstChild).toHaveClass(`spinner-${size}`); }); });