UNPKG

@girders-elements/core

Version:

Girders Elements is an architectural framework that assists with building data-driven apps with React or React Native.

240 lines (153 loc) 7.18 kB
'use strict'; var _immutable=require('immutable'); var _element=require('../element');function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;} describe('element',function(){ it('tests if an object is an element',function(){ var emptyKind=(0,_immutable.fromJS)({ kind:[]}); var stringKind=(0,_immutable.fromJS)({ kind:'component'}); var singleKind=(0,_immutable.fromJS)({ kind:['component']}); var doubleKind=(0,_immutable.fromJS)({ kind:['component','test']}); var noKind=(0,_immutable.fromJS)({ title:'bla'}); var aList=_immutable.List.of(stringKind,singleKind,doubleKind,emptyKind); expect((0,_element.isElement)(emptyKind)).toBeTruthy(); expect((0,_element.isElement)(stringKind)).toBeTruthy(); expect((0,_element.isElement)(singleKind)).toBeTruthy(); expect((0,_element.isElement)(doubleKind)).toBeTruthy(); expect((0,_element.isElement)(noKind)).toEqual(false); expect((0,_element.isElement)(aList)).toEqual(false); }); it('properly checks for element kinds',function(){ var emptyKind=(0,_immutable.fromJS)({ kind:[]}); var stringKind=(0,_immutable.fromJS)({ kind:'component'}); var singleKind=(0,_immutable.fromJS)({ kind:['component']}); var doubleKind=(0,_immutable.fromJS)({ kind:['component','test']}); var tripleKind=(0,_immutable.fromJS)({ kind:['component','test','detail']}); expect((0,_element.isOfKind)('component',stringKind)).toEqual(true); expect((0,_element.isOfKind)('component')(stringKind)).toEqual(true); expect((0,_element.isOfKind)(['component'],stringKind)).toEqual(true); expect((0,_element.isOfKind)([],singleKind)).toEqual(true); expect((0,_element.isOfKind)(['component'],singleKind)).toEqual(true); expect((0,_element.isOfKind)(['component'],doubleKind)).toEqual(true); expect((0,_element.isOfKind)(['component','test'],doubleKind)).toEqual(true); expect((0,_element.isOfKind)(['component'],tripleKind)).toEqual(true); expect((0,_element.isOfKind)(['component','test'],tripleKind)).toEqual(true); expect((0,_element.isOfKind)(['component','test','detail'],tripleKind)).toEqual(true); expect((0,_element.isOfKind)('component',null)).toEqual(false); expect((0,_element.isOfKind)('component',emptyKind)).toEqual(false); expect((0,_element.isOfKind)('',emptyKind)).toEqual(false); expect((0,_element.isOfKind)(['unknown'],stringKind)).toEqual(false); expect((0,_element.isOfKind)(['component','test'],singleKind)).toEqual(false); expect((0,_element.isOfKind)(['test'],doubleKind)).toEqual(false); expect((0,_element.isOfKind)(['component','test','detail'],doubleKind)).toEqual(false); expect((0,_element.isOfKind)(['detail'],tripleKind)).toEqual(false); expect( (0,_element.isOfKind)(['component','test','detail','unknown'],tripleKind)). toEqual(false); }); it('properly checks for exact element kinds',function(){ var element=(0,_immutable.fromJS)({ kind:['component','test']}); expect((0,_element.isExactlyOfKind)(null,null)).toEqual(false); expect((0,_element.isExactlyOfKind)(['component'],element)).toEqual(false); expect((0,_element.isExactlyOfKind)(['component','test'],element)).toEqual(true); expect((0,_element.isExactlyOfKind)(['component','test'])(element)).toEqual(true); }); it('returns the element kind',function(){ var kind=['component','test']; var element1=(0,_immutable.fromJS)({ kind:null}); var element2=(0,_immutable.fromJS)({ kind:kind}); expect((0,_element.kindOf)(element1)).toEqual(null); expect((0,_element.kindOf)(element2)).toEqual((0,_immutable.List)(kind)); }); it('returns the ancestor kinds',function(){ var kinds=['component','test','detail']; var ancestors=[ ['component','test','detail'], ['component','test'], ['component']]; expect((0,_element.ancestorKinds)([]).toJS()).toEqual([]); expect((0,_element.ancestorKinds)('component').toJS()).toEqual([['component']]); expect((0,_element.ancestorKinds)(kinds).toJS()).toEqual(ancestors); }); it('properly normalizes element kinds',function(){ expect((0,_element.canonical)(null)).toEqual(null); expect((0,_element.canonical)(true)).toEqual(null); expect((0,_element.canonical)('component')).toEqual(_immutable.List.of('component')); expect((0,_element.canonical)(['component','test'])).toEqual( _immutable.List.of('component','test')); expect((0,_element.canonical)(_immutable.List.of('component','test'))).toEqual( _immutable.List.of('component','test')); expect((0,_element.canonical)(_immutable.Seq.of('component'))).toEqual(_immutable.List.of('component')); }); }); describe('childPositions',function(){ var aString=(0,_immutable.fromJS)(_defineProperty({ kind:'component'},_element.childrenProperty, 'children')); var anArray=(0,_immutable.fromJS)(_defineProperty({ kind:'component'},_element.childrenProperty, ['children'])); var multiple=(0,_immutable.fromJS)(_defineProperty({ kind:'component'},_element.childrenProperty, ['children','aside'])); var missing=(0,_immutable.fromJS)({ kind:'component'}); expect((0,_element.childPositions)(aString)).toEqualI(_immutable.List.of('children')); expect((0,_element.childPositions)(anArray)).toEqualI(_immutable.List.of('children')); expect((0,_element.childPositions)(multiple)).toEqualI(_immutable.List.of('children','aside')); expect((0,_element.childPositions)(missing)).toEqualI((0,_immutable.List)()); }); describe('pathsToChildElements',function(){var _fromJS4,_fromJS5,_fromJS6,_fromJS7,_fromJS8; var aStringWithSingleChild=(0,_immutable.fromJS)((_fromJS4={ kind:'component'},_defineProperty(_fromJS4,_element.childrenProperty, 'children'),_defineProperty(_fromJS4,'children', { kind:'child', bla:1}),_fromJS4)); expect((0,_element.pathsToChildElements)(aStringWithSingleChild)).toEqualI( (0,_immutable.fromJS)([['children']])); var anArrayWithSingleChild=(0,_immutable.fromJS)((_fromJS5={ kind:'component'},_defineProperty(_fromJS5,_element.childrenProperty, ['children']),_defineProperty(_fromJS5,'children', { kind:'child'}),_fromJS5)); expect((0,_element.pathsToChildElements)(anArrayWithSingleChild)).toEqualI( (0,_immutable.fromJS)([['children']])); var aStringWithChildrenArray=(0,_immutable.fromJS)((_fromJS6={ kind:'component'},_defineProperty(_fromJS6,_element.childrenProperty, 'children'),_defineProperty(_fromJS6,'children', [ { kind:'child'}, { kind:'child'}]),_fromJS6)); expect((0,_element.pathsToChildElements)(aStringWithChildrenArray)).toEqualI( (0,_immutable.fromJS)([['children',0],['children',1]])); var anArrayWithChildrenArray=(0,_immutable.fromJS)((_fromJS7={ kind:'component'},_defineProperty(_fromJS7,_element.childrenProperty, ['children']),_defineProperty(_fromJS7,'children', [ { kind:'child'}]),_fromJS7)); expect((0,_element.pathsToChildElements)(anArrayWithChildrenArray)).toEqualI( (0,_immutable.fromJS)([['children',0]])); var nonExistingChildPOsition=(0,_immutable.fromJS)((_fromJS8={ kind:'component'},_defineProperty(_fromJS8,_element.childrenProperty, ['children','foo']),_defineProperty(_fromJS8,'children', { kind:'child'}),_fromJS8)); expect((0,_element.pathsToChildElements)(nonExistingChildPOsition)).toEqualI( (0,_immutable.fromJS)([['children']])); });