badge.test.js 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. import Badge from '../index';
  2. import Avatar from '../../avatar/index';
  3. import ConfigProvider from '../../configProvider';
  4. function getBadge(props) {
  5. if (!props.optionList && !props.children) {
  6. props.children = <Avatar color='blue'>Semi</Avatar>
  7. }
  8. return mount(<Badge {...props} />);
  9. }
  10. describe('badge', () => {
  11. it('badge with custom className & style', () => {
  12. let props = {
  13. className: 'test',
  14. style: {
  15. color: 'red'
  16. }
  17. }
  18. let badge = getBadge(props);
  19. expect(badge.hasClass('test')).toEqual(true);
  20. expect(badge.find('span.test')).toHaveStyle('color', 'red');
  21. badge.unmount();
  22. });
  23. it('badge children', () => {
  24. let children = (<div>semi design</div>)
  25. let props = {
  26. children
  27. };
  28. let badge = getBadge(props);
  29. expect(badge.contains(children)).toEqual(true);
  30. });
  31. it('badge count', () => {
  32. let props = {
  33. count: 5
  34. };
  35. let badge = getBadge(props);
  36. expect(badge.find('.semi-badge-count').text()).toEqual("5");
  37. expect(badge.exists('.semi-badge-dot')).toEqual(false);
  38. let stringProps = {
  39. count: 'semi'
  40. }
  41. let stringBadge = getBadge(stringProps);
  42. expect(stringBadge.find('.semi-badge-count').text()).toEqual("semi");
  43. expect(stringBadge.exists('.semi-badge-dot')).toEqual(false);
  44. });
  45. it('badge dot', () => {
  46. let props = {
  47. dot: true
  48. };
  49. let badge = getBadge(props);
  50. expect(badge.exists('.semi-badge-dot')).toEqual(true);
  51. expect(badge.exists('.semi-badge-count')).toEqual(false);
  52. });
  53. it('badge overflowCount', () => {
  54. let props = {
  55. count: 99,
  56. overflowCount: 5
  57. };
  58. let badge = getBadge(props);
  59. expect(badge.find('.semi-badge-count').text()).toEqual('5+');
  60. });
  61. it('badge type & theme', () => {
  62. let types = ['primary', 'secondary', 'tertiary', 'warning', 'danger'];
  63. let themes = ['solid', 'light', 'inverted'];
  64. let props = {
  65. type: types[0],
  66. theme: themes[0]
  67. }
  68. let badge = getBadge(props)
  69. expect(badge.exists(`.semi-badge-${types[0]}`)).toEqual(true);
  70. badge.setProps({ type: types[1] });
  71. badge.update();
  72. expect(badge.exists(`.semi-badge-${types[1]}`)).toEqual(true);
  73. badge.setProps({ type: types[2] });
  74. badge.update();
  75. expect(badge.exists(`.semi-badge-${types[2]}`)).toEqual(true);
  76. badge.setProps({ type: types[3] });
  77. badge.update();
  78. expect(badge.exists(`.semi-badge-${types[3]}`)).toEqual(true);
  79. badge.setProps({ type: types[4] });
  80. badge.update();
  81. expect(badge.exists(`.semi-badge-${types[4]}`)).toEqual(true);
  82. badge.setProps({ theme: themes[1] });
  83. badge.update();
  84. expect(badge.exists(`.semi-badge-${themes[1]}`)).toEqual(true);
  85. badge.setProps({ theme: themes[2] });
  86. badge.update();
  87. expect(badge.exists(`.semi-badge-${themes[2]}`)).toEqual(true);
  88. });
  89. it('badge position', () => {
  90. let leftTop = { position: 'leftTop' };
  91. let leftBottom = { position: 'leftBottom' };
  92. let rightTop = { } //rightTop is default position
  93. let rightBottom = { position: 'rightBottom' };
  94. let leftTopBadge = getBadge(leftTop);
  95. let leftBottomBadge = getBadge(leftBottom);
  96. let rightTopBadge = getBadge(rightTop);
  97. let rightBottomBadge = getBadge(rightBottom);
  98. expect(leftTopBadge.exists('.semi-badge-leftTop')).toEqual(true);
  99. expect(leftBottomBadge.exists('.semi-badge-leftBottom')).toEqual(true);
  100. expect(rightTopBadge.exists('.semi-badge-rightTop')).toEqual(true);
  101. expect(rightBottomBadge.exists('.semi-badge-rightBottom')).toEqual(true);
  102. });
  103. it('badge in rtl mode', ()=>{
  104. let rtlWrapper = mount(
  105. <ConfigProvider direction='rtl'>
  106. <Badge count={5}>Semi</Badge>
  107. </ConfigProvider>
  108. )
  109. // when in rtl mode, default position is 'rightTop'
  110. expect(rtlWrapper.exists('.semi-badge-leftTop')).toEqual(true);
  111. })
  112. });