import "@testing-library/jest-dom"; import { render, screen } from "@testing-library/react"; import Badge from "./Badge"; describe("Badge", () => { test("renders the children", () => { render(Active); expect(screen.getByText("Active")).toBeInTheDocument(); }); test("renders a number as children", () => { render({42}); expect(screen.getByText("42")).toBeInTheDocument(); }); test("renders as a span element", () => { const { container } = render(Label); expect(container.firstChild?.tagName).toBe("SPAN"); }); test("defaults to the default variant", () => { const { container } = render(Label); expect(container.firstChild).toHaveClass("badge-default"); }); test("defaults to the md size", () => { const { container } = render(Label); expect(container.firstChild).toHaveClass("badge-md"); }); test("applies the correct variant class", () => { const { container } = render(Success); expect(container.firstChild).toHaveClass("badge-success"); }); test("applies the correct size class", () => { const { container } = render(Large); expect(container.firstChild).toHaveClass("badge-lg"); }); test("applies an additional className", () => { const { container } = render(Label); expect(container.firstChild).toHaveClass("badge", "custom-badge"); }); test.each([ "default", "primary", "secondary", "success", "warning", "info", "error", ])("renders the %s variant without error", (variant) => { const { container } = render({variant}); expect(container.firstChild).toHaveClass(`badge-${variant}`); }); test.each(["sm", "md", "lg"])("renders the %s size without error", (size) => { const { container } = render(Label); expect(container.firstChild).toHaveClass(`badge-${size}`); }); });