import { render, screen } from "@testing-library/react"; import { describe, expect, it } from "vitest"; import { Card } from "#/ui/card"; describe("Card", () => { it("should render children", () => { render(Card Content); expect(screen.getByText("Card Content")).toBeInTheDocument(); }); it("should render with testId", () => { render(Content); expect(screen.getByTestId("test-card")).toBeInTheDocument(); }); it("should apply custom className", () => { render( Content , ); expect(screen.getByTestId("test-card")).toHaveClass("custom-class"); }); describe("theme variants", () => { it("should apply default theme styles", () => { render(Content); const card = screen.getByTestId("test-card"); expect(card).toHaveClass("bg-[#26282D]"); expect(card).toHaveClass("border-[#727987]"); expect(card).toHaveClass("rounded-xl"); }); it("should apply outlined theme styles", () => { render( Content , ); const card = screen.getByTestId("test-card"); expect(card).toHaveClass("bg-transparent"); expect(card).toHaveClass("border-[#727987]"); }); it("should apply dark theme styles", () => { render( Content , ); const card = screen.getByTestId("test-card"); expect(card).toHaveClass("bg-black"); expect(card).toHaveClass("border-[#242424]"); expect(card).toHaveClass("rounded-2xl"); }); }); describe("hover variants", () => { it("should not apply hover styles when hover is none", () => { render( Content , ); const card = screen.getByTestId("test-card"); expect(card).not.toHaveClass("hover:bg-[linear-gradient"); }); it("should apply elevated hover styles", () => { render( Content , ); const card = screen.getByTestId("test-card"); expect(card).toHaveClass("transition-all"); expect(card).toHaveClass("duration-200"); }); }); describe("gradient variants", () => { it("should not apply gradient styles when gradient is none", () => { render( Content , ); const card = screen.getByTestId("test-card"); expect(card).not.toHaveClass("bg-[#0A0A0A80]"); }); it("should apply standard gradient styles", () => { render( Content , ); const card = screen.getByTestId("test-card"); expect(card).toHaveClass("bg-[#0A0A0A80]"); expect(card).toHaveClass("border-t-[#24242499]"); }); }); describe("combined variants", () => { it("should apply dark theme with standard gradient", () => { render( Content , ); const card = screen.getByTestId("test-card"); // Should have dark theme base expect(card).toHaveClass("border-[#242424]"); expect(card).toHaveClass("rounded-2xl"); // Should have gradient overlay expect(card).toHaveClass("bg-[#0A0A0A80]"); }); it("should apply dark theme with elevated hover", () => { render( Content , ); const card = screen.getByTestId("test-card"); expect(card).toHaveClass("rounded-2xl"); expect(card).toHaveClass("transition-all"); }); }); it("should have flex display by default", () => { render(Content); expect(screen.getByTestId("test-card")).toHaveClass("flex"); }); it("should have relative positioning", () => { render(Content); expect(screen.getByTestId("test-card")).toHaveClass("relative"); }); });