import { describe, it, expect } from "vitest"; import { cn, getDifficultyColor, getDifficultyLabel, capitalize } from "./utils"; describe("cn", () => { it("joins multiple class names", () => { expect(cn("foo", "bar")).toBe("foo bar"); }); it("filters out falsy values", () => { expect(cn("foo", undefined, false, "bar")).toBe("foo bar"); }); it("returns empty string for no classes", () => { expect(cn()).toBe(""); }); }); describe("getDifficultyColor", () => { it("returns easy difficulty CSS variable classes", () => { const result = getDifficultyColor("easy"); expect(result).toContain("--difficulty-easy"); }); it("returns medium difficulty CSS variable classes", () => { const result = getDifficultyColor("medium"); expect(result).toContain("--difficulty-medium"); }); it("returns hard difficulty CSS variable classes", () => { const result = getDifficultyColor("hard"); expect(result).toContain("--difficulty-hard"); }); }); describe("getDifficultyLabel", () => { it("returns accessible label for easy", () => { expect(getDifficultyLabel("easy")).toBe("Easy difficulty"); }); it("returns accessible label for medium", () => { expect(getDifficultyLabel("medium")).toBe("Medium difficulty"); }); it("returns accessible label for hard", () => { expect(getDifficultyLabel("hard")).toBe("Hard difficulty"); }); }); describe("capitalize", () => { it("capitalizes first letter", () => { expect(capitalize("hello")).toBe("Hello"); }); it("handles already capitalized strings", () => { expect(capitalize("Hello")).toBe("Hello"); }); it("handles single character", () => { expect(capitalize("a")).toBe("A"); }); it("handles empty string", () => { expect(capitalize("")).toBe(""); }); });