// (C) 2007-2019 GoodData Corporation import { createLayout } from "../LayoutBuilder"; import { createProject } from "../ProjectBuilder"; import { schema } from "../../fixtures/dummySchema"; const layout = { fluidLayout: { rows: [ { columns: [ { size: { xl: { width: 6 } }, content: { widget: { identifier: "vis.a" } }, }, { size: { xl: { width: 6 } }, content: { widget: { identifier: "kpi.a" } }, }, ], }, { columns: [ { size: { xl: { width: 12 } }, content: { widget: { identifier: "vis.b" } }, }, ], }, ], }, }; const layoutWithEmptyColumn = { fluidLayout: { rows: [ { columns: [ { size: { xl: { width: 6 } }, content: { widget: { identifier: "vis.a" } }, }, { size: { xl: { width: 6 } }, }, ], }, { columns: [ { size: { xl: { width: 12 } }, content: { widget: { identifier: "vis.b" } }, }, ], }, ], }, }; const layoutWithRowSection = { fluidLayout: { rows: [ { columns: [ { size: { xl: { width: 6 } }, content: { widget: { identifier: "vis.a" } }, }, ], }, { columns: [ { size: { xl: { width: 12 } }, content: { widget: { identifier: "vis.b" } }, }, ], header: { title: "title", }, }, { columns: [ { size: { xl: { width: 6 } }, content: { widget: { identifier: "kpi.a" } }, }, ], header: { title: "title", description: "description", }, }, ], }, }; it("should build layout", () => { const project = createProject(schema); expect(createLayout(layout, project)).toEqual({ fluidLayout: { rows: [ { columns: [ { content: { widget: { qualifier: { uri: "/gdc/md/mockproject/obj/vis.a" } } }, size: { xl: { width: 6 } }, }, { content: { widget: { qualifier: { uri: "/gdc/md/mockproject/obj/kpi.a" } } }, size: { xl: { width: 6 } }, }, ], }, { columns: [ { content: { widget: { qualifier: { uri: "/gdc/md/mockproject/obj/vis.b" } } }, size: { xl: { width: 12 } }, }, ], }, ], }, }); }); it("omits empty content", () => { const project = createProject(schema); expect(createLayout(layoutWithEmptyColumn, project)).toEqual({ fluidLayout: { rows: [ { columns: [ { content: { widget: { qualifier: { uri: "/gdc/md/mockproject/obj/vis.a" } } }, size: { xl: { width: 6 } }, }, { size: { xl: { width: 6 } }, }, ], }, { columns: [ { content: { widget: { qualifier: { uri: "/gdc/md/mockproject/obj/vis.b" } } }, size: { xl: { width: 12 } }, }, ], }, ], }, }); }); it("should build layout and set header section", () => { const project = createProject(schema); expect(createLayout(layoutWithRowSection, project)).toEqual({ fluidLayout: { rows: [ { columns: [ { size: { xl: { width: 6 } }, content: { widget: { qualifier: { uri: "/gdc/md/mockproject/obj/vis.a" } } }, }, ], }, { columns: [ { size: { xl: { width: 12 } }, content: { widget: { qualifier: { uri: "/gdc/md/mockproject/obj/vis.b" } } }, }, ], header: { title: "title", }, }, { columns: [ { size: { xl: { width: 6 } }, content: { widget: { qualifier: { uri: "/gdc/md/mockproject/obj/kpi.a" } } }, }, ], header: { title: "title", description: "description", }, }, ], }, }); });