|
|
|
@ -1,4 +1,4 @@ |
|
|
|
import { createDefaultProps } from "../src/userInterface/propsDefinitionParsing/createDefaultProps"; |
|
|
|
import { createProps } from "../src/userInterface/propsDefinitionParsing/createProps"; |
|
|
|
import { |
|
|
|
keys, some |
|
|
|
} from "lodash/fp"; |
|
|
|
@ -10,12 +10,33 @@ describe("createDefaultProps", () => { |
|
|
|
fieldName: {type:"string", default:"something"} |
|
|
|
}; |
|
|
|
|
|
|
|
const { props, errors } = createDefaultProps(propDef); |
|
|
|
const { props, errors } = createProps("some_component",propDef); |
|
|
|
|
|
|
|
expect(errors).toEqual([]); |
|
|
|
expect(props.fieldName).toBeDefined(); |
|
|
|
expect(props.fieldName).toBe("something"); |
|
|
|
expect(keys(props).length).toBe(1); |
|
|
|
expect(keys(props).length).toBe(2); |
|
|
|
}); |
|
|
|
|
|
|
|
it("should set component name", () => { |
|
|
|
const propDef = { |
|
|
|
fieldName: {type:"string", default:"something"} |
|
|
|
}; |
|
|
|
|
|
|
|
const { props, errors } = createProps("some_component",propDef); |
|
|
|
|
|
|
|
expect(errors).toEqual([]); |
|
|
|
expect(props._component).toBe("some_component"); |
|
|
|
}); |
|
|
|
|
|
|
|
it("should return error when component name not supplied", () => { |
|
|
|
const propDef = { |
|
|
|
fieldName: {type:"string", default:"something"} |
|
|
|
}; |
|
|
|
|
|
|
|
const { errors } = createProps("",propDef); |
|
|
|
|
|
|
|
expect(errors.length).toEqual(1); |
|
|
|
}); |
|
|
|
|
|
|
|
it("should create a object with single blank string value, when no default", () => { |
|
|
|
@ -23,7 +44,7 @@ describe("createDefaultProps", () => { |
|
|
|
fieldName: {type:"string"} |
|
|
|
}; |
|
|
|
|
|
|
|
const { props, errors } = createDefaultProps(propDef); |
|
|
|
const { props, errors } = createProps("some_component",propDef); |
|
|
|
|
|
|
|
expect(errors).toEqual([]); |
|
|
|
expect(props.fieldName).toBeDefined(); |
|
|
|
@ -35,7 +56,7 @@ describe("createDefaultProps", () => { |
|
|
|
fieldName: "string" |
|
|
|
}; |
|
|
|
|
|
|
|
const { props, errors } = createDefaultProps(propDef); |
|
|
|
const { props, errors } = createProps("some_component",propDef); |
|
|
|
|
|
|
|
expect(errors).toEqual([]); |
|
|
|
expect(props.fieldName).toBeDefined(); |
|
|
|
@ -44,38 +65,50 @@ describe("createDefaultProps", () => { |
|
|
|
|
|
|
|
it("should create a object with single fals value, when prop definition is 'bool' ", () => { |
|
|
|
const propDef = { |
|
|
|
fieldName: "bool" |
|
|
|
isVisible: "bool" |
|
|
|
}; |
|
|
|
|
|
|
|
const { props, errors } = createDefaultProps(propDef); |
|
|
|
const { props, errors } = createProps("some_component",propDef); |
|
|
|
|
|
|
|
expect(errors).toEqual([]); |
|
|
|
expect(props.fieldName).toBeDefined(); |
|
|
|
expect(props.fieldName).toBe(false); |
|
|
|
expect(props.isVisible).toBeDefined(); |
|
|
|
expect(props.isVisible).toBe(false); |
|
|
|
}); |
|
|
|
|
|
|
|
it("should create a object with single 0 value, when prop definition is 'number' ", () => { |
|
|
|
const propDef = { |
|
|
|
fieldName: "number" |
|
|
|
width: "number" |
|
|
|
}; |
|
|
|
|
|
|
|
const { props, errors } = createDefaultProps(propDef); |
|
|
|
const { props, errors } = createProps("some_component",propDef); |
|
|
|
|
|
|
|
expect(errors).toEqual([]); |
|
|
|
expect(props.fieldName).toBeDefined(); |
|
|
|
expect(props.fieldName).toBe(0); |
|
|
|
expect(props.width).toBeDefined(); |
|
|
|
expect(props.width).toBe(0); |
|
|
|
}); |
|
|
|
|
|
|
|
it("should create a object with single 0 value, when prop definition is 'array' ", () => { |
|
|
|
it("should create a object with single empty array, when prop definition is 'array' ", () => { |
|
|
|
const propDef = { |
|
|
|
fieldName: "array" |
|
|
|
columns: "array" |
|
|
|
}; |
|
|
|
|
|
|
|
const { props, errors } = createDefaultProps(propDef); |
|
|
|
const { props, errors } = createProps("some_component",propDef); |
|
|
|
|
|
|
|
expect(errors).toEqual([]); |
|
|
|
expect(props.fieldName).toBeDefined(); |
|
|
|
expect(props.fieldName).toEqual([]); |
|
|
|
expect(props.columns).toBeDefined(); |
|
|
|
expect(props.columns).toEqual([]); |
|
|
|
}); |
|
|
|
|
|
|
|
it("should create a object with single empty component props, when prop definition is 'component' ", () => { |
|
|
|
const propDef = { |
|
|
|
content: "component" |
|
|
|
}; |
|
|
|
|
|
|
|
const { props, errors } = createProps("some_component",propDef); |
|
|
|
|
|
|
|
expect(errors).toEqual([]); |
|
|
|
expect(props.content).toBeDefined(); |
|
|
|
expect(props.content).toEqual({_component:""}); |
|
|
|
}); |
|
|
|
|
|
|
|
it("should create an object with multiple prop names", () => { |
|
|
|
@ -84,14 +117,14 @@ describe("createDefaultProps", () => { |
|
|
|
fieldLength: { type: "number", default: 500 } |
|
|
|
}; |
|
|
|
|
|
|
|
const { props, errors } = createDefaultProps(propDef); |
|
|
|
const { props, errors } = createProps("some_component",propDef); |
|
|
|
|
|
|
|
expect(errors).toEqual([]); |
|
|
|
expect(props.fieldName).toBeDefined(); |
|
|
|
expect(props.fieldName).toBe(""); |
|
|
|
expect(props.fieldLength).toBeDefined(); |
|
|
|
expect(props.fieldLength).toBe(500); |
|
|
|
expect(keys(props).length).toBe(2); |
|
|
|
expect(keys(props).length).toBe(3); |
|
|
|
}) |
|
|
|
|
|
|
|
it("should return error when invalid type", () => { |
|
|
|
@ -100,7 +133,7 @@ describe("createDefaultProps", () => { |
|
|
|
fieldLength: { type: "invalid type name "} |
|
|
|
}; |
|
|
|
|
|
|
|
const { errors } = createDefaultProps(propDef); |
|
|
|
const { errors } = createProps("some_component",propDef); |
|
|
|
|
|
|
|
expect(errors.length).toBe(2); |
|
|
|
expect(some(e => e.propName === "fieldName")(errors)).toBeTruthy(); |
|
|
|
@ -112,7 +145,7 @@ describe("createDefaultProps", () => { |
|
|
|
fieldName: {type:"string", default: 1} |
|
|
|
}; |
|
|
|
|
|
|
|
const { errors } = createDefaultProps(propDef); |
|
|
|
const { errors } = createProps("some_component",propDef); |
|
|
|
|
|
|
|
expect(errors.length).toBe(1); |
|
|
|
expect(some(e => e.propName === "fieldName")(errors)).toBeTruthy(); |
|
|
|
@ -125,10 +158,11 @@ describe("createDefaultProps", () => { |
|
|
|
}; |
|
|
|
|
|
|
|
const derivedFrom = { |
|
|
|
_component:"root", |
|
|
|
fieldName: "surname" |
|
|
|
}; |
|
|
|
|
|
|
|
const { props, errors } = createDefaultProps(propDef, [derivedFrom]); |
|
|
|
const { props, errors } = createProps("some_component",propDef, [derivedFrom]); |
|
|
|
|
|
|
|
expect(errors.length).toBe(0); |
|
|
|
expect(props.fieldName).toBe("surname"); |
|
|
|
@ -139,23 +173,31 @@ describe("createDefaultProps", () => { |
|
|
|
it("should merge in derived props, last in list taking priority", () => { |
|
|
|
const propDef = { |
|
|
|
fieldName: "string", |
|
|
|
fieldLength: { type: "number", default: 500} |
|
|
|
fieldLength: { type: "number", default: 500}, |
|
|
|
header: "component", |
|
|
|
content: { |
|
|
|
type: "component", |
|
|
|
default: { _component: "childcomponent", wdith: 500 } |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
const derivedFrom1 = { |
|
|
|
_component:"root", |
|
|
|
fieldName: "surname", |
|
|
|
fieldLength: 200 |
|
|
|
}; |
|
|
|
|
|
|
|
const derivedFrom2 = { |
|
|
|
_component:"child", |
|
|
|
fieldName: "forename" |
|
|
|
}; |
|
|
|
|
|
|
|
const { props, errors } = createDefaultProps(propDef, [derivedFrom1, derivedFrom2]); |
|
|
|
const { props, errors } = createProps("some_component",propDef, [derivedFrom1, derivedFrom2]); |
|
|
|
|
|
|
|
expect(errors.length).toBe(0); |
|
|
|
expect(props.fieldName).toBe("forename"); |
|
|
|
expect(props.fieldLength).toBe(200); |
|
|
|
expect(props._component).toBe("child"); |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|