import { describe, it } from "@std/testing/bdd"; import { UI } from "@commontools/api"; import * as assert from "./assert.ts"; import { isVNode } from "../src/jsx.ts"; describe("jsx dom fragments support", () => { it("dom fragments should work", () => { const fragment = ( <>

Hello world

); assert.matchObject( fragment,

Hello world

, ); }); it("dom fragments with multiple children", () => { const fragment = ( <>

Grocery List

); assert.matchObject( fragment,

Grocery List

, ); }); it("fragments inside the element", () => { const grocery = ( <>

Grocery List

); assert.matchObject(
{grocery}
,

Grocery List

, ); }); }); describe("isVNode utility", () => { it("returns true for a direct VNode", () => { const vnode = { type: "vnode", name: "div", props: {}, children: [] }; assert.equal(isVNode(vnode), true); }); it("returns true for a VNode wrapped in [UI]", () => { const vnode = { type: "vnode", name: "div", props: {}, children: [] }; const wrapped = { [UI]: vnode }; assert.equal(isVNode(wrapped), true); }); it("returns false for non-VNode objects", () => { assert.equal(isVNode({}), false); assert.equal(isVNode({ foo: "bar" }), false); assert.equal(isVNode([]), false); assert.equal(isVNode(null), false); assert.equal(isVNode(undefined), false); assert.equal(isVNode("string"), false); assert.equal(isVNode(123), false); }); });