import { expect, test } from "bun:test"; import { parse, generate } from "../src/index.ts"; test("native boolean attributes inside conditional and loop bodies use presence semantics", async () => { const source = `page Example { load server account { return {} } view { {#if account.visible}{/if} {#each account.rows as row}{/each} } }`; const code = new Bun.Transpiler({ loader: "ts" }).transformSync(generate(parse(source))); const mod = await import("data:text/javascript;base64," + Buffer.from(code).toString("base64")); const html = await mod.default({ account: { visible: true, edit: true, rows: [{ checked: false }, { checked: true }] }, }); expect(html).not.toContain("disabled"); expect(html).not.toContain('checked="false"'); expect(html.match(/ checked/g)).toHaveLength(1); expect(html).toContain("required"); const denied = await mod.default({ account: { visible: true, edit: false, rows: [] } }); expect(denied).toContain(" disabled"); });