UNPKG

react-native-ui-lib

Version:

UI Components Library for React Native ###### Lateset version support RN44

243 lines (211 loc) • 10 kB
var _BaseComponent=require('../BaseComponent');var _BaseComponent2=_interopRequireDefault(_BaseComponent); var _MultipleShadow=require('../../components/MultipleShadow');var _MultipleShadow2=_interopRequireDefault(_MultipleShadow); var _view=require('../../components/view');var _view2=_interopRequireDefault(_view); var _style=require('../../style');function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};} describe('BaseComponent',function(){ describe('background modifiers',function(){ it('should return color value according to background-?? prop that was sent',function(){ var uut=new _BaseComponent2.default({'background-red30':true}); expect(uut.extractBackgroundColorValue()).toBe(_style.Colors.red30); uut=new _BaseComponent2.default({'bg-red30':true}); expect(uut.extractBackgroundColorValue()).toBe(_style.Colors.red30); }); it('should return undefined value for unfamiliar color const',function(){ var uut=new _BaseComponent2.default({'background-uknown30':true}); expect(uut.extractBackgroundColorValue()).toBe(undefined); }); }); describe('extractTypographyValue',function(){ it('should extract typography value according to typography modifier',function(){ expect(new _BaseComponent2.default({text40:true}).extractTypographyValue()).toEqual(_style.Typography.text40); expect(new _BaseComponent2.default({text70:true}).extractTypographyValue()).toEqual(_style.Typography.text70); }); it('should return undefined if not typography modifier was sent',function(){ expect(new _BaseComponent2.default({}).extractTypographyValue()).toEqual(undefined); }); it('should return take the last typography modifier prop in case there is more than one',function(){ expect(new _BaseComponent2.default({text40:true,text70:true}).extractTypographyValue()).toEqual(_style.Typography.text70); expect(new _BaseComponent2.default({text70:true,text40:true}).extractTypographyValue()).toEqual(_style.Typography.text40); expect(new _BaseComponent2.default({text40:true,text70:false}).extractTypographyValue()).toEqual(_style.Typography.text40); }); }); describe('paddings modifiers',function(){ it('should return paddings values according to padding?-?? prop that was sent',function(){ var uut=new _BaseComponent2.default({ 'padding-25':true, 'paddingL-15':true, 'paddingT-10':true, 'paddingR-20':true, 'paddingB-15':true, 'paddingH-20':true, 'paddingV-15':true}); expect(uut.extractPaddingValues()).toEqual({ padding:25, paddingLeft:15, paddingTop:10, paddingRight:20, paddingBottom:15, paddingHorizontal:20, paddingVertical:15}); }); it('should ignore unfamiliar paddings keys',function(){ var uut=new _BaseComponent2.default({'paddings-25':true}); expect(uut.extractPaddingValues()).toEqual({}); }); it('should ignore non numeric padding values',function(){ var uut=new _BaseComponent2.default({'padding-2a5':true}); expect(uut.extractPaddingValues()).toEqual({}); }); }); describe('margins modifiers',function(){ it('should return margins values according to margin?-?? prop that was sent',function(){ var uut=new _BaseComponent2.default({ 'margin-25':true, 'marginL-15':true, 'marginT-10':true, 'marginR-20':true, 'marginB-15':true, 'marginH-20':true, 'marginV-15':true}); expect(uut.extractMarginValues()).toEqual({ margin:25, marginLeft:15, marginTop:10, marginRight:20, marginBottom:15, marginHorizontal:20, marginVertical:15}); }); it('should ignore unfamiliar margin keys',function(){ var uut=new _BaseComponent2.default({'margins-25':true}); expect(uut.extractMarginValues()).toEqual({}); }); it('should ignore non numeric margin values',function(){ var uut=new _BaseComponent2.default({'margin-2a5':true}); expect(uut.extractMarginValues()).toEqual({}); }); }); describe('alignments modifiers',function(){ it('should return prop alignment for a row view',function(){ var uut=new _BaseComponent2.default({row:true,left:true}); expect(uut.extractAlignmentsValues()).toEqual({flexDirection:'row',justifyContent:'flex-start'}); uut=new _BaseComponent2.default({row:true,right:true}); expect(uut.extractAlignmentsValues()).toEqual({flexDirection:'row',justifyContent:'flex-end'}); uut=new _BaseComponent2.default({row:true,top:true}); expect(uut.extractAlignmentsValues()).toEqual({flexDirection:'row',alignItems:'flex-start'}); uut=new _BaseComponent2.default({row:true,bottom:true}); expect(uut.extractAlignmentsValues()).toEqual({flexDirection:'row',alignItems:'flex-end'}); uut=new _BaseComponent2.default({row:true,centerH:true}); expect(uut.extractAlignmentsValues()).toEqual({flexDirection:'row',justifyContent:'center'}); uut=new _BaseComponent2.default({row:true,centerV:true}); expect(uut.extractAlignmentsValues()).toEqual({flexDirection:'row',alignItems:'center'}); uut=new _BaseComponent2.default({row:true,spread:true}); expect(uut.extractAlignmentsValues()).toEqual({flexDirection:'row',justifyContent:'space-between'}); }); it('should return prop alignment for a column view (default)',function(){ var uut=new _BaseComponent2.default({left:true}); expect(uut.extractAlignmentsValues()).toEqual({alignItems:'flex-start'}); uut=new _BaseComponent2.default({right:true}); expect(uut.extractAlignmentsValues()).toEqual({alignItems:'flex-end'}); uut=new _BaseComponent2.default({top:true}); expect(uut.extractAlignmentsValues()).toEqual({justifyContent:'flex-start'}); uut=new _BaseComponent2.default({bottom:true}); expect(uut.extractAlignmentsValues()).toEqual({justifyContent:'flex-end'}); uut=new _BaseComponent2.default({centerH:true}); expect(uut.extractAlignmentsValues()).toEqual({alignItems:'center'}); uut=new _BaseComponent2.default({centerV:true}); expect(uut.extractAlignmentsValues()).toEqual({justifyContent:'center'}); uut=new _BaseComponent2.default({spread:true}); expect(uut.extractAlignmentsValues()).toEqual({justifyContent:'space-between'}); }); it('should return center alignment for both axis',function(){ var uut=new _BaseComponent2.default({center:true}); expect(uut.extractAlignmentsValues()).toEqual({justifyContent:'center',alignItems:'center'}); uut=new _BaseComponent2.default({row:true,center:true}); expect(uut.extractAlignmentsValues()). toEqual({flexDirection:'row',justifyContent:'center',alignItems:'center'}); }); }); describe('flex modifiers',function(){ it('should return flex value according to flex-? prop',function(){ var uut=new _BaseComponent2.default({'flex-2':true}); expect(uut.extractFlexValue()).toEqual(2); uut=new _BaseComponent2.default({'flex-0':true}); expect(uut.extractFlexValue()).toEqual(0); uut=new _BaseComponent2.default({}); expect(uut.extractFlexValue()).toEqual(undefined); }); it('should return 1 flex value according when only flex sent',function(){ var uut=new _BaseComponent2.default({flex:true}); expect(uut.extractFlexValue()).toEqual(1); uut=new _BaseComponent2.default({'flex-':true}); expect(uut.extractFlexValue()).toEqual(1); }); it('should return undefined when prop sent with false value',function(){ var uut=new _BaseComponent2.default({flex:false}); expect(uut.extractFlexValue()).toEqual(undefined); }); it('should ignore non numeric values',function(){ var uut=new _BaseComponent2.default({'flex-1a2':true}); expect(uut.extractFlexValue()).toEqual(undefined); }); }); describe('flexStyle modifier',function(){ it('should return flex style according to flex-? prop',function(){ var uut=new _BaseComponent2.default({'flex-2':true}); expect(uut.extractFlexStyle()).toEqual({flex:2}); uut=new _BaseComponent2.default({flex:true}); expect(uut.extractFlexStyle()).toEqual({flex:1}); uut=new _BaseComponent2.default({'flex-0':true}); expect(uut.extractFlexStyle()).toEqual({flex:0}); uut=new _BaseComponent2.default({}); expect(uut.extractFlexStyle()).toEqual(undefined); }); it('should handle flexG and flexS props',function(){ var uut=new _BaseComponent2.default({'flexG-2':true}); expect(uut.extractFlexStyle()).toEqual({flexGrow:2}); uut=new _BaseComponent2.default({flexG:true}); expect(uut.extractFlexStyle()).toEqual({flexGrow:1}); uut=new _BaseComponent2.default({'flexS-3':true}); expect(uut.extractFlexStyle()).toEqual({flexShrink:3}); uut=new _BaseComponent2.default({flexS:true}); expect(uut.extractFlexStyle()).toEqual({flexShrink:1}); uut=new _BaseComponent2.default({flexG:false,flexS:false}); expect(uut.extractFlexStyle()).toEqual(undefined); }); it('should handle bad usage',function(){ var uut=new _BaseComponent2.default({'flexG-2s':true}); expect(uut.extractFlexStyle()).toEqual(undefined); uut=new _BaseComponent2.default({'flex-aaa':true}); expect(uut.extractFlexStyle()).toEqual(undefined); uut=new _BaseComponent2.default({'flexB-12':true}); expect(uut.extractFlexStyle()).toEqual(undefined); uut=new _BaseComponent2.default({'flex-':true}); expect(uut.extractFlexStyle()).toEqual({flex:1}); }); }); describe('border radius modifier',function(){ it('should return border radius value according br? modifier prop',function(){ var uut=new _BaseComponent2.default({br10:true}); expect(uut.extractBorderRadiusValue()).toEqual(_style.BorderRadiuses.br10); uut=new _BaseComponent2.default({br20:true}); expect(uut.extractBorderRadiusValue()).toEqual(_style.BorderRadiuses.br20); }); }); describe('extractOwnProps',function(){ it('should extract the component props from a props object',function(){ var props={color:'red',topShadow:1,bottomShadow:2}; expect(_MultipleShadow2.default.extractOwnProps(props)).toEqual({topShadow:1,bottomShadow:2}); }); }); describe('extractModifiersProps',function(){ it('should return all modifiers props',function(){ var uut=new _view2.default({'paddingL-20':true,'bg-red30':true,other:'some-value'}); expect(uut.extractModifierProps()).toEqual({'paddingL-20':true,'bg-red30':true}); uut=new _view2.default({'margin-50':true,'background-blue20':true,other:'some-value'}); expect(uut.extractModifierProps()).toEqual({'margin-50':true,'background-blue20':true}); uut=new _view2.default({left:true,'bg-red10':false,other:'some-value'}); expect(uut.extractModifierProps()).toEqual({left:true,'bg-red10':false}); }); }); });