import { describe, expect, test } from "bun:test"; import { formatWrn, parse } from "../src/index.ts"; const options = { insertSpaces: true, tabSize: 2, printWidth: 70, multilineAttributes: true, } as const; describe("canonical WRN formatter", () => { test("formats declarations, structured values, markup, and imports idempotently", () => { const source = `import Card from "@/components/Card.wrn" component Demo { props { title: string = "Hello" items = [{ id: 1, label: "One" }] } view { {title} } }`; const formatted = formatWrn(source, options); expect(formatted).toContain('import Card from "@/components/Card.wrn"'); expect(formatted).toContain('props {\n title: string = "Hello"'); expect(formatted).toContain('items = [{ id: 1, label: "One" }]'); expect(formatted).toContain(" parse(formatted)).not.toThrow(); }); test("preserves comments and normalizes the final newline", () => { const source = `// leading comment\r\npage Home {\r\nview {

Home

}\r\n}`; const formatted = formatWrn(source, options); expect(formatted.startsWith("// leading comment\n")).toBe(true); expect(formatted).toContain(""); expect(formatted.endsWith("\n")).toBe(true); expect(formatted).not.toContain("\r"); }); });