You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
88 lines
2.8 KiB
88 lines
2.8 KiB
"use strict";
|
|
|
|
var _chai = require("chai");
|
|
|
|
var _layoutElementParser = _interopRequireDefault(require("./layout-element-parser"));
|
|
|
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
|
|
describe('layoutElementParser', function () {
|
|
const propertyName = 'name';
|
|
const property2 = 'surname';
|
|
const props = {
|
|
mt: 'default',
|
|
ml: 'xxxl'
|
|
};
|
|
it('parses regular string', function () {
|
|
(0, _chai.expect)((0, _layoutElementParser.default)(propertyName)).to.deep.eq({
|
|
properties: [propertyName],
|
|
props: {},
|
|
layoutElements: [],
|
|
component: 'Box'
|
|
});
|
|
});
|
|
it('parses list of strings', function () {
|
|
(0, _chai.expect)((0, _layoutElementParser.default)([propertyName, property2])).to.deep.eq({
|
|
properties: [propertyName, property2],
|
|
props: {},
|
|
layoutElements: [],
|
|
component: 'Box'
|
|
});
|
|
});
|
|
it('parses property and props', function () {
|
|
(0, _chai.expect)((0, _layoutElementParser.default)([propertyName, props])).to.deep.eq({
|
|
properties: [propertyName],
|
|
props,
|
|
layoutElements: [],
|
|
component: 'Box'
|
|
});
|
|
});
|
|
it('recursively parses and inner element as string', function () {
|
|
const innerElement = ['string2', {
|
|
width: 1 / 2
|
|
}];
|
|
(0, _chai.expect)((0, _layoutElementParser.default)([props, [innerElement]])).to.deep.eq({
|
|
properties: [],
|
|
props,
|
|
layoutElements: [(0, _layoutElementParser.default)(innerElement)],
|
|
component: 'Box'
|
|
});
|
|
});
|
|
it('recursively parses nested objects', function () {
|
|
const nested = [['companyName', {
|
|
ml: 'xxl'
|
|
}], 'email', ['address', 'profilePhotoLocation']];
|
|
const complicatedElement = [props, nested];
|
|
(0, _chai.expect)((0, _layoutElementParser.default)(complicatedElement)).to.deep.eq({
|
|
properties: [],
|
|
props,
|
|
layoutElements: nested.map(el => (0, _layoutElementParser.default)(el)),
|
|
component: 'Box'
|
|
});
|
|
});
|
|
it('returns layoutElements when array is passed', function () {
|
|
const arrayElements = [['string1', {
|
|
width: 1 / 2
|
|
}], ['string2', {
|
|
width: 1 / 2
|
|
}]];
|
|
(0, _chai.expect)((0, _layoutElementParser.default)(arrayElements)).to.deep.eq({
|
|
properties: [],
|
|
props: {},
|
|
component: 'Box',
|
|
layoutElements: arrayElements.map(innerElement => (0, _layoutElementParser.default)(innerElement))
|
|
});
|
|
});
|
|
it('changes the component when @ is appended', function () {
|
|
const headerProps = {
|
|
children: 'Welcome my boy'
|
|
};
|
|
const componentElements = ['@Header', headerProps];
|
|
(0, _chai.expect)((0, _layoutElementParser.default)(componentElements)).to.deep.eq({
|
|
properties: [],
|
|
props: headerProps,
|
|
component: 'Header',
|
|
layoutElements: []
|
|
});
|
|
});
|
|
}); |