avatarGroup.test.js 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. import AvatarGroup from '../avatarGroup';
  2. import Avatar from '../index';
  3. import { mount } from 'enzyme';
  4. import React from 'react';
  5. import { BASE_CLASS_PREFIX } from '../../../semi-foundation/base/constants';
  6. function getAg(props) {
  7. const baseAvatarGroup = (
  8. <AvatarGroup {...props}>
  9. <Avatar color='red'>LL</Avatar>
  10. <Avatar >CX</Avatar>
  11. <Avatar color='amber'>RM</Avatar>
  12. <Avatar style={{ color: '#f56a00', backgroundColor: '#fde3cf' }}>ZL</Avatar>
  13. <Avatar style={{ backgroundColor: '#87d068' }} >YZ</Avatar>
  14. </AvatarGroup>
  15. );
  16. return mount(baseAvatarGroup, { attachTo: document.getElementById('container') });
  17. }
  18. describe('AvatarGroup', () => {
  19. it('【className】custom className', () => {
  20. let props = {
  21. className: 'test',
  22. };
  23. const wrapper = getAg(props);
  24. expect(wrapper.hasClass('test')).toEqual(true);
  25. });
  26. it('avatarGroup overlapFrom', () => {
  27. const avatarGroup = getAg();
  28. expect(avatarGroup.props().overlapFrom).toEqual('start');
  29. avatarGroup.setProps({ overlapFrom: 'end' });
  30. avatarGroup.update();
  31. expect(avatarGroup.props().overlapFrom).toEqual('end');
  32. });
  33. it('maxCount', () => {
  34. const avatarGroup = getAg({maxCount: 3});
  35. expect(
  36. avatarGroup
  37. .find(`.${BASE_CLASS_PREFIX}-avatar`)
  38. .at(3)
  39. .find(`.${BASE_CLASS_PREFIX}-avatar-content .${BASE_CLASS_PREFIX}-avatar-label`)
  40. .getDOMNode()
  41. .textContent
  42. ).toEqual('+2');
  43. });
  44. it('renderMore', () => {
  45. const avatarGroup = getAg({
  46. maxCount: 3,
  47. renderMore: restNumber => <span className='custom'>/{restNumber}</span>
  48. });
  49. expect(
  50. avatarGroup
  51. .find('.custom')
  52. .at(0)
  53. .getDOMNode()
  54. .textContent
  55. ).toEqual('/2');
  56. });
  57. it('size', () => {
  58. const element = (
  59. <div>
  60. <AvatarGroup size="extra-extra-small" style={{ margin: 4 }}>
  61. <Avatar color="red">LL</Avatar>
  62. </AvatarGroup>
  63. <AvatarGroup size="extra-small" style={{ margin: 4 }}>
  64. <Avatar color="red">LL</Avatar>
  65. </AvatarGroup>
  66. <AvatarGroup size="small" style={{ margin: 4 }}>
  67. <Avatar color="red">LL</Avatar>
  68. </AvatarGroup>
  69. <AvatarGroup size="default" style={{ margin: 4 }}>
  70. <Avatar color="red">LL</Avatar>
  71. </AvatarGroup>
  72. <AvatarGroup size="large" style={{ margin: 4 }}>
  73. <Avatar color="red">LL</Avatar>
  74. </AvatarGroup>
  75. <AvatarGroup size="extra-large" style={{ margin: 4 }}>
  76. <Avatar color="red">LL</Avatar>
  77. </AvatarGroup>
  78. </div>
  79. );
  80. const wrapper = mount(element);
  81. expect(
  82. wrapper
  83. .find(`.${BASE_CLASS_PREFIX}-avatar-group`)
  84. .at(1)
  85. .find(`.${BASE_CLASS_PREFIX}-avatar`)
  86. .at(0)
  87. .find(`.${BASE_CLASS_PREFIX}-avatar-extra-extra-small`)
  88. .length
  89. ).toEqual(0);
  90. expect(
  91. wrapper
  92. .find(`.${BASE_CLASS_PREFIX}-avatar-group`)
  93. .at(0)
  94. .find(`.${BASE_CLASS_PREFIX}-avatar`)
  95. .at(0)
  96. .find(`.${BASE_CLASS_PREFIX}-avatar-extra-extra-small`)
  97. .length
  98. ).toEqual(1);
  99. expect(
  100. wrapper
  101. .find(`.${BASE_CLASS_PREFIX}-avatar-group`)
  102. .at(1)
  103. .find(`.${BASE_CLASS_PREFIX}-avatar`)
  104. .at(0)
  105. .find(`.${BASE_CLASS_PREFIX}-avatar-extra-small`)
  106. .length
  107. ).toEqual(1);
  108. expect(
  109. wrapper
  110. .find(`.${BASE_CLASS_PREFIX}-avatar-group`)
  111. .at(2)
  112. .find(`.${BASE_CLASS_PREFIX}-avatar`)
  113. .at(0)
  114. .find(`.${BASE_CLASS_PREFIX}-avatar-small`)
  115. .length
  116. ).toEqual(1);
  117. expect(
  118. wrapper
  119. .find(`.${BASE_CLASS_PREFIX}-avatar-group`)
  120. .at(3)
  121. .find(`.${BASE_CLASS_PREFIX}-avatar`)
  122. .at(0)
  123. .find(`.${BASE_CLASS_PREFIX}-avatar-default`)
  124. .length
  125. ).toEqual(1);
  126. expect(
  127. wrapper
  128. .find(`.${BASE_CLASS_PREFIX}-avatar-group`)
  129. .at(4)
  130. .find(`.${BASE_CLASS_PREFIX}-avatar`)
  131. .at(0)
  132. .find(`.${BASE_CLASS_PREFIX}-avatar-large`)
  133. .length
  134. ).toEqual(1);
  135. expect(
  136. wrapper
  137. .find(`.${BASE_CLASS_PREFIX}-avatar-group`)
  138. .at(5)
  139. .find(`.${BASE_CLASS_PREFIX}-avatar`)
  140. .at(0)
  141. .find(`.${BASE_CLASS_PREFIX}-avatar-extra-large`)
  142. .length
  143. ).toEqual(1);
  144. });
  145. it('size', () => {
  146. const element = (
  147. <div>
  148. <AvatarGroup shape='circle' style={{ margin: 4 }}>
  149. <Avatar color="red">LL</Avatar>
  150. </AvatarGroup>
  151. <AvatarGroup shape='square' style={{ margin: 4 }}>
  152. <Avatar color="red">LL</Avatar>
  153. </AvatarGroup>
  154. </div>
  155. );
  156. const wrapper = mount(element);
  157. expect(
  158. wrapper
  159. .find(`.${BASE_CLASS_PREFIX}-avatar-group`)
  160. .at(1)
  161. .find(`.${BASE_CLASS_PREFIX}-avatar`)
  162. .at(0)
  163. .find(`.${BASE_CLASS_PREFIX}-avatar-circle`)
  164. .length
  165. ).toEqual(0);
  166. expect(
  167. wrapper
  168. .find(`.${BASE_CLASS_PREFIX}-avatar-group`)
  169. .at(0)
  170. .find(`.${BASE_CLASS_PREFIX}-avatar`)
  171. .at(0)
  172. .find(`.${BASE_CLASS_PREFIX}-avatar-circle`)
  173. .length
  174. ).toEqual(1);
  175. expect(
  176. wrapper
  177. .find(`.${BASE_CLASS_PREFIX}-avatar-group`)
  178. .at(1)
  179. .find(`.${BASE_CLASS_PREFIX}-avatar`)
  180. .at(0)
  181. .find(`.${BASE_CLASS_PREFIX}-avatar-square`)
  182. .length
  183. ).toEqual(1);
  184. });
  185. });