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}`);
});
});