import { load, makePage, makeScreen } from "./testAppDef" describe("initialiseApp", () => { it("should populate simple div with initial props", async () => { const { dom } = await load( makePage({ _component: "testlib/div", className: "my-test-class", }) ) expect(dom.window.document.body.children.length).toBe(1) const child = dom.window.document.body.children[0] expect(child.className.includes("my-test-class")).toBeTruthy() }) it("should populate child component with props", async () => { const { dom } = await load( makePage({ _component: "testlib/div", _children: [ { _component: "testlib/h1", text: "header one", }, { _component: "testlib/h1", text: "header two", }, ], }) ) const rootDiv = dom.window.document.body.children[0] expect(rootDiv.children.length).toBe(2) expect(rootDiv.children[0].tagName).toBe("H1") expect(rootDiv.children[0].innerText).toBe("header one") expect(rootDiv.children[1].tagName).toBe("H1") expect(rootDiv.children[1].innerText).toBe("header two") }) it("should append children when told to do so", async () => { const { dom } = await load( makePage({ _component: "testlib/div", _children: [ { _component: "testlib/h1", text: "header one", }, { _component: "testlib/h1", text: "header two", }, ], append: true, }) ) const rootDiv = dom.window.document.body.children[0] expect(rootDiv.children.length).toBe(3) expect(rootDiv.children[0].tagName).toBe("DIV") expect(rootDiv.children[0].className).toBe("default-child") expect(rootDiv.children[1].tagName).toBe("H1") expect(rootDiv.children[1].innerText).toBe("header one") expect(rootDiv.children[2].tagName).toBe("H1") expect(rootDiv.children[2].innerText).toBe("header two") }) it("should populate page with correct screen", async () => { const { dom } = await load( makePage({ _component: "testlib/div", _children: [ { _component: "##builtin/screenslot", }, ], }), [ makeScreen("/", { _component: "testlib/div", className: "screen-class", }), ] ) const rootDiv = dom.window.document.body.children[0] expect(rootDiv.children.length).toBe(1) expect(rootDiv.children[0].children.length).toBe(1) expect( rootDiv.children[0].children[0].className.includes("screen-class") ).toBeTruthy() }) it("should populate screen with children", async () => { const { dom } = await load( makePage({ _component: "testlib/div", _children: [ { _component: "##builtin/screenslot", text: "header one", }, ], }), [ makeScreen("/", { _component: "testlib/div", className: "screen-class", _children: [ { _component: "testlib/h1", text: "header one", }, { _component: "testlib/h1", text: "header two", }, ], }), ] ) const rootDiv = dom.window.document.body.children[0] expect(rootDiv.children.length).toBe(1) const screenRoot = rootDiv.children[0] expect(screenRoot.children.length).toBe(1) expect(screenRoot.children[0].children.length).toBe(2) expect(screenRoot.children[0].children[0].innerText).toBe("header one") expect(screenRoot.children[0].children[1].innerText).toBe("header two") }) it("should repeat elements that pass an array of contexts", async () => { const { dom } = await load( makePage({ _component: "testlib/div", _children: [ { _component: "##builtin/screenslot", text: "header one", }, ], }), [ makeScreen("/", { _component: "testlib/list", data: [1,2,3,4], _children: [ { _component: "testlib/h1", text: "header", } ], }), ] ) const rootDiv = dom.window.document.body.children[0] expect(rootDiv.children.length).toBe(1) const screenRoot = rootDiv.children[0] expect(screenRoot.children[0].children.length).toBe(4) expect(screenRoot.children[0].children[0].innerText).toBe("header") }) })