import { it, describe, expect } from "vitest"; import { render, screen } from "@testing-library/react"; import { Heading } from "./index"; import { createRef } from "react"; describe("Heading Component", () => { it("renders with default tag when no tag is provided", () => { render(Test Heading); const headingElement = screen.getByText("Test Heading"); expect(headingElement.tagName).toBe("H1"); }); it("renders with provided tag name", () => { render(Test Heading); const headingElement = screen.getByText("Test Heading"); expect(headingElement.tagName).toBe("H2"); }); it("applies custom className along with default styles", () => { render(Test Heading); const headingElement = screen.getByText("Test Heading"); expect(headingElement).toHaveClass("custom-class"); }); it("forwards ref to the DOM element", () => { const ref = createRef(); render(Test Heading); expect(ref.current?.tagName).toBe("H1"); }); it("renders correctly with variant styles for different levels", () => { const { rerender } = render(Test Heading); let headingElement = screen.getByText("Test Heading"); expect(headingElement).toHaveClass("font-redonda text-4xl font-extrabold"); rerender(Test Heading); headingElement = screen.getByText("Test Heading"); expect(headingElement).toHaveClass("text-3xl"); rerender(Test Heading); headingElement = screen.getByText("Test Heading"); expect(headingElement).toHaveClass("text-2xl"); rerender(Test Heading); headingElement = screen.getByText("Test Heading"); expect(headingElement).toHaveClass("text-xl"); rerender(Test Heading); headingElement = screen.getByText("Test Heading"); expect(headingElement).toHaveClass("text-md"); rerender(Test Heading); headingElement = screen.getByText("Test Heading"); expect(headingElement).toHaveClass("text-sm font"); }); });