descriptions.test.js 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. import { Descriptions, Tag } from '../../index';
  2. import { BASE_CLASS_PREFIX } from '../../../semi-foundation/base/constants';
  3. const data = [
  4. { key: '实际用户数量', value: '1,480,000' },
  5. { key: '7天留存', value: '98%' },
  6. { key: '安全等级', value: '3级' },
  7. { key: '垂类标签', value: <Tag>电商</Tag> },
  8. { key: '认证状态', value: '未认证' },
  9. ];
  10. const dataWithHide = [
  11. { key: '实际用户数量', value: '1,480,000', hidden: true },
  12. { key: '7天留存', value: '98%' },
  13. { key: '安全等级', value: '3级' },
  14. { key: '垂类标签', value: <Tag style={{ margin: 0 }}>电商</Tag> },
  15. { key: '认证状态', value: '未认证' },
  16. ];
  17. const dataWithKeyIsNode = [
  18. { key: <strong>实际用户数量</strong>, value: '1,480,000' },
  19. { key: '7天留存', value: '98%' },
  20. { key: '安全等级', value: '3级' },
  21. { key: '垂类标签', value: <Tag>电商</Tag> },
  22. { key: '认证状态', value: '未认证' },
  23. ];
  24. function renderDescriptions(props) {
  25. const realProps = {
  26. data,
  27. ...props,
  28. };
  29. return mount(<Descriptions {...realProps}></Descriptions>, {
  30. attachTo: document.getElementById('container'),
  31. });
  32. }
  33. describe('Descriptions', () => {
  34. beforeEach(() => {
  35. const div = document.createElement('div');
  36. div.setAttribute('id', 'container');
  37. document.body.appendChild(div);
  38. });
  39. afterEach(() => {
  40. const div = document.getElementById('container');
  41. if (div) {
  42. document.body.removeChild(div);
  43. }
  44. document.body.innerHTML = '';
  45. });
  46. it('Descriptions with data', () => {
  47. const descriptions = renderDescriptions();
  48. const item = document.querySelectorAll('tr');
  49. expect(item.length).toEqual(5);
  50. expect(
  51. descriptions
  52. .find(`.${BASE_CLASS_PREFIX}-descriptions-key`)
  53. .at(0)
  54. .getDOMNode()
  55. .textContent
  56. ).toEqual('实际用户数量');
  57. expect(
  58. descriptions
  59. .find(`.${BASE_CLASS_PREFIX}-descriptions-value`)
  60. .at(0)
  61. .getDOMNode()
  62. .textContent
  63. ).toEqual('1,480,000');
  64. descriptions.unmount();
  65. });
  66. it('Descriptions with className / style', () => {
  67. const props = {
  68. className: 'test',
  69. style: { height: 420 },
  70. };
  71. const descriptions = renderDescriptions(props);
  72. expect(descriptions.hasClass('test')).toEqual(true);
  73. expect(descriptions.find('div.test')).toHaveStyle('height', 420);
  74. descriptions.unmount();
  75. });
  76. it('Descriptions with align', () => {
  77. const centerDesc = renderDescriptions({ align: "center" });
  78. expect(centerDesc.exists(`.${BASE_CLASS_PREFIX}-descriptions-center`)).toEqual(true);
  79. centerDesc.unmount();
  80. const justifyDesc = renderDescriptions({ align: "justify" });
  81. expect(justifyDesc.exists(`.${BASE_CLASS_PREFIX}-descriptions-justify`)).toEqual(true);
  82. justifyDesc.unmount();
  83. const leftDesc = renderDescriptions({ align: "left" });
  84. expect(leftDesc.exists(`.${BASE_CLASS_PREFIX}-descriptions-left`)).toEqual(true);
  85. leftDesc.unmount();
  86. const plainDesc = renderDescriptions({ align: "plain" });
  87. expect(plainDesc.exists(`.${BASE_CLASS_PREFIX}-descriptions-plain`)).toEqual(true);
  88. plainDesc.unmount();
  89. });
  90. it('Descriptions with row', () => {
  91. const rowDesc = renderDescriptions({ row: true });
  92. expect(rowDesc.exists(`.${BASE_CLASS_PREFIX}-descriptions-double`)).toEqual(true);
  93. rowDesc.unmount();
  94. });
  95. it('Descriptions with dataItem hidden', () => {
  96. const rowDesc = renderDescriptions({ data: dataWithHide });
  97. const item = document.querySelectorAll('tr');
  98. expect(item.length).toEqual(4);
  99. expect(
  100. rowDesc
  101. .find(`.${BASE_CLASS_PREFIX}-descriptions-key`)
  102. .at(0)
  103. .getDOMNode()
  104. .textContent
  105. ).toEqual('7天留存');
  106. expect(
  107. rowDesc
  108. .find(`.${BASE_CLASS_PREFIX}-descriptions-value`)
  109. .at(0)
  110. .getDOMNode()
  111. .textContent
  112. ).toEqual('98%');
  113. rowDesc.unmount();
  114. });
  115. it('Descriptions with size', () => {
  116. const smallDesc = renderDescriptions({ row: true, size: 'small' });
  117. expect(smallDesc.exists(`.${BASE_CLASS_PREFIX}-descriptions-double-small`)).toEqual(true);
  118. smallDesc.unmount();
  119. const mediumDesc = renderDescriptions({ row: true, size: 'medium' });
  120. expect(mediumDesc.exists(`.${BASE_CLASS_PREFIX}-descriptions-double-medium`)).toEqual(true);
  121. mediumDesc.unmount();
  122. const largeDesc = renderDescriptions({ row: true, size: 'large' });
  123. expect(largeDesc.exists(`.${BASE_CLASS_PREFIX}-descriptions-double-large`)).toEqual(true);
  124. largeDesc.unmount();
  125. });
  126. it('Descriptions with jsx', () => {
  127. const desc = mount(
  128. <Descriptions>
  129. <Descriptions.Item itemKey="实际用户数量">1,480,000</Descriptions.Item>
  130. <Descriptions.Item itemKey="7天留存">98%</Descriptions.Item>
  131. <Descriptions.Item itemKey="安全等级">3级</Descriptions.Item>
  132. <Descriptions.Item itemKey="垂类标签">电商</Descriptions.Item>
  133. <Descriptions.Item itemKey="认证状态">未认证</Descriptions.Item>
  134. </Descriptions>, {
  135. attachTo: document.getElementById('container'),
  136. });
  137. const item = document.querySelectorAll('tr');
  138. expect(item.length).toEqual(5);
  139. expect(
  140. desc
  141. .find(`.${BASE_CLASS_PREFIX}-descriptions-key`)
  142. .at(0)
  143. .getDOMNode()
  144. .textContent
  145. ).toEqual('实际用户数量');
  146. expect(
  147. desc
  148. .find(`.${BASE_CLASS_PREFIX}-descriptions-value`)
  149. .at(0)
  150. .getDOMNode()
  151. .textContent
  152. ).toEqual('1,480,000');
  153. desc.unmount();
  154. });
  155. it('Descriptions with key is node', () => {
  156. const desc = renderDescriptions({ data: dataWithKeyIsNode });
  157. expect(
  158. desc
  159. .find(`.${BASE_CLASS_PREFIX}-descriptions-key strong`)
  160. .at(0)
  161. .getDOMNode()
  162. .textContent
  163. ).toEqual('实际用户数量');
  164. expect(
  165. desc
  166. .find(`.${BASE_CLASS_PREFIX}-descriptions-key`)
  167. .at(1)
  168. .getDOMNode()
  169. .textContent
  170. ).toEqual('7天留存');
  171. desc.unmount();
  172. });
  173. })