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