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
			| 
											3 years ago
										 | "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: [] | ||
|  |     }); | ||
|  |   }); | ||
|  | }); |