import { describe, expect, it } from "vitest" import { cn, isMxCellXmlComplete, wrapWithMxFile } from "@/lib/utils" describe("isMxCellXmlComplete", () => { it("returns false for empty/null input", () => { expect(isMxCellXmlComplete("")).toBe(false) expect(isMxCellXmlComplete(null)).toBe(false) expect(isMxCellXmlComplete(undefined)).toBe(false) }) it("returns true for self-closing mxCell", () => { const xml = '' expect(isMxCellXmlComplete(xml)).toBe(true) }) it("returns true for mxCell with closing tag", () => { const xml = ` ` expect(isMxCellXmlComplete(xml)).toBe(true) }) it("returns false for truncated mxCell", () => { const xml = ' { const xml = ` { const xml = ` ` expect(isMxCellXmlComplete(xml)).toBe(true) }) }) describe("wrapWithMxFile", () => { it("wraps empty string with default structure", () => { const result = wrapWithMxFile("") expect(result).toContain("") expect(result).toContain("") expect(result).toContain('') expect(result).toContain('') }) it("wraps raw mxCell content", () => { const xml = '' const result = wrapWithMxFile(xml) expect(result).toContain("") expect(result).toContain(xml) expect(result).toContain("") }) it("returns full mxfile unchanged", () => { const fullXml = '' const result = wrapWithMxFile(fullXml) expect(result).toBe(fullXml) }) it("handles whitespace in input", () => { const result = wrapWithMxFile(" ") expect(result).toContain("") }) }) describe("cn (class name utility)", () => { it("merges class names", () => { expect(cn("foo", "bar")).toBe("foo bar") }) it("handles conditional classes", () => { expect(cn("foo", false && "bar", "baz")).toBe("foo baz") }) it("merges tailwind classes correctly", () => { expect(cn("px-2", "px-4")).toBe("px-4") expect(cn("text-red-500", "text-blue-500")).toBe("text-blue-500") }) })