Files
codetutor/frontend/src/lib/utils.test.ts

66 lines
1.8 KiB
TypeScript

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