import { generate_css, make_margin, generate_screen_css } from '../src/builderStore/generate_css.js'; describe('make_margin', () => { test('it should generate a valid rule', () => { expect(make_margin(["1", "1", "1", "1"])).toEqual('1px 1px 1px 1px') }) test('empty values should output 0', () => { expect(make_margin(["1", "1", "", ""])).toEqual('1px 1px 0px 0px') expect(make_margin(["1", "", "", "1"])).toEqual('1px 0px 0px 1px') expect(make_margin(["", "", "", ""])).toEqual('0px 0px 0px 0px') }) }) describe('generate_css', () => { test('it should generate a valid css rule: grid-area', () => { expect( generate_css({ layout: { gridarea: ["", "", "", ""] } }) ).toEqual({ layout: '', position: '' }); }) test('it should generate a valid css rule: grid-gap', () => { expect( generate_css({ layout: { gap: "10" } }) ).toEqual({ layout: 'grid-gap: 10px;\ndisplay: grid;', position: '' }); }) test('it should generate a valid css rule: column 1', () => { expect( generate_css({ position: { column: ["", ""] } } )).toEqual({ layout: '', position: '' }); }) test('it should generate a valid css rule: column 2', () => { expect( generate_css({ position: { column: ["1", ""] } }) ).toEqual({ position: 'grid-column-start: 1;', layout: '' }); }) test('it should generate a valid css rule: column 3', () => { expect( generate_css({ position: { column: ["", "1"] } }) ).toEqual({ position: 'grid-column-end: 1;', layout: '' }); }) test('it should generate a valid css rule: column 4', () => { expect( generate_css({ position: { column: ["1", "1"] } }) ).toEqual({ position: 'grid-column-start: 1;\ngrid-column-end: 1;', layout: '' }); }) test('it should generate a valid css rule: row 1', () => { expect( generate_css({ position: { row: ["", ""] } }) ).toEqual({ layout: '', position: '' }); }) test('it should generate a valid css rule: row 2', () => { expect( generate_css({ position: { row: ["1", ""] } }) ).toEqual({ position: 'grid-row-start: 1;', layout: '' }); }) test('it should generate a valid css rule: row 3', () => { expect( generate_css({ position: { row: ["", "1"] } }) ).toEqual({ position: 'grid-row-end: 1;', layout: '' }); }) test('it should generate a valid css rule: row 4', () => { expect( generate_css({ position: { row: ["1", "1"] } }) ).toEqual({ position: 'grid-row-start: 1;\ngrid-row-end: 1;', layout: '' }); }) test('it should generate a valid css rule: padding 1', () => { expect( generate_css({ position: { padding: ["1", "1", "1", "1"] } }) ).toEqual({ position: 'padding: 1px 1px 1px 1px;', layout: '' }); }) test('it should generate a valid css rule: padding 2', () => { expect( generate_css({ position: { padding: ["1", "", "", "1"] } }) ).toEqual({ position: 'padding: 1px 0px 0px 1px;', layout: '' }); }) test('it should generate a valid css rule: margin 1', () => { expect( generate_css({ position: { margin: ["1", "1", "1", "1"] } }) ).toEqual({ position: 'margin: 1px 1px 1px 1px;', layout: '' }); }) test('it should generate a valid css rule: margin 2', () => { expect( generate_css({ position: { margin: ["1", "", "", "1"] } }) ).toEqual({ position: 'margin: 1px 0px 0px 1px;', layout: '' }); }) test('it should generate a valid css rule: z-index 1', () => { expect( generate_css({ position: { zindex: "" } }) ).toEqual({ position: '', layout: '' }); }) test('it should generate a valid css rule: z-index 2', () => { expect( generate_css({ position: { zindex: "1" } }) ).toEqual({ position: 'z-index: 1;', layout: '' }); }) }) describe('generate_screen_css', () => { test('it should compile the css for a list of components', () => { const components = [ { _styles: { layout: { gridarea: ["", "", "", ""] }, position: { margin: ["1", "1", "1", "1"] } }, _id: 1 }, { _styles: { layout: { gridarea: ["", "", "", ""] }, position: { margin: ["1", "1", "1", "1"] } }, _id: 2 }, { _styles: { layout: { gridarea: ["", "", "", ""] }, position: { margin: ["1", "1", "1", "1"] } }, _id: 3 } , { _styles: { layout: { gridarea: ["", "", "", ""] }, position: { margin: ["1", "1", "1", "1"] } }, _id: 4 } ] const compiled = `.pos-1 { margin: 1px 1px 1px 1px; } .lay-1 { } .pos-2 { margin: 1px 1px 1px 1px; } .lay-2 { } .pos-3 { margin: 1px 1px 1px 1px; } .lay-3 { } .pos-4 { margin: 1px 1px 1px 1px; } .lay-4 { }` expect(generate_screen_css(components)).toEqual(compiled) }) test('it should compile the css for a list of components', () => { const components = [ { _styles: { layout: { gridarea: ["", "", "", ""] }, position: { margin: ["1", "1", "1", "1"] } }, _id: 1, _children: [ { _styles: { layout: { gridarea: ["", "", "", ""] }, position: { margin: ["1", "1", "1", "1"] } }, _id: 2, _children: [ { _styles: { layout: { gridarea: ["", "", "", ""] }, position: { margin: ["1", "1", "1", "1"] } }, _id: 3, _children: [ { _styles: { layout: { gridarea: ["", "", "", ""] }, position: { margin: ["1", "1", "1", "1"] } }, _id: 4, _children: [ { _styles: { layout: { gridarea: ["", "", "", ""] }, position: { margin: ["1", "1", "1", "1"] } }, _id: 5, _children: [ ] }, ] }, ] }, ] }, ] }, { _styles: { layout: { gridarea: ["", "", "", ""] }, position: { margin: ["1", "1", "1", "1"] } }, _id: 6 }, { _styles: { layout: { gridarea: ["", "", "", ""] }, position: { margin: ["1", "1", "1", "1"] } }, _id: 7 } , { _styles: { layout: { gridarea: ["", "", "", ""] }, position: { margin: ["1", "1", "1", "1"] } }, _id: 8 } ] const compiled = `.pos-1 { margin: 1px 1px 1px 1px; } .lay-1 { } .pos-2 { margin: 1px 1px 1px 1px; } .lay-2 { } .pos-3 { margin: 1px 1px 1px 1px; } .lay-3 { } .pos-4 { margin: 1px 1px 1px 1px; } .lay-4 { } .pos-5 { margin: 1px 1px 1px 1px; } .lay-5 { } .pos-6 { margin: 1px 1px 1px 1px; } .lay-6 { } .pos-7 { margin: 1px 1px 1px 1px; } .lay-7 { } .pos-8 { margin: 1px 1px 1px 1px; } .lay-8 { }` expect(generate_screen_css(components)).toEqual(compiled) }) })