import { describe, test, expect } from "vitest" import { parseSlots } from "../src/slot-parser" describe("slot-parser — parseSlots", () => { test("parses icon slot with all defaults", () => { const svg = `` const slots = parseSlots(svg) expect(slots).toHaveLength(1) expect(slots[0].name).toBe("icon") expect(slots[0].x).toBe(312) expect(slots[0].y).toBe(200) expect(slots[0].w).toBe(400) expect(slots[0].h).toBe(400) expect(slots[0].fit).toBe("contain") expect(slots[0].recolor).toBe("accent") expect(slots[0].bg).toBe("none") expect(slots[0].border).toBe("none") expect(slots[0].radius).toBe(0) }) test("parses badge slot with bg+border+radius", () => { const svg = `` const slots = parseSlots(svg) expect(slots).toHaveLength(1) expect(slots[0].name).toBe("badge") expect(slots[0].recolor).toBe("none") expect(slots[0].bg).toBe("surface") expect(slots[0].border).toBe("accent") expect(slots[0].radius).toBe(0.5) }) test("parses multiple slots", () => { const svg = ` ` const slots = parseSlots(svg) expect(slots).toHaveLength(3) expect(slots.map((s) => s.name)).toEqual(["icon", "sub-icon", "badge"]) }) test("defaults fit to contain when omitted", () => { const svg = `` const slots = parseSlots(svg) expect(slots[0].fit).toBe("contain") expect(slots[0].recolor).toBe("none") }) test("returns empty for no slots", () => { expect(parseSlots("")).toEqual([]) }) test("skips slot without name", () => { const svg = `` expect(parseSlots(svg)).toEqual([]) }) })