@hi-ui/hiui 2.15.10 → 2.15.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (340) hide show
  1. package/CHANGELOG.md +3 -0
  2. package/es/_util/warning.js +2 -2
  3. package/es/alert/__test__/index.test.js +67 -0
  4. package/es/alert/index.js +147 -6
  5. package/es/alert/style/index.css +1 -1
  6. package/es/badge/index.js +87 -9
  7. package/es/badge/style/index.css +1 -1
  8. package/es/badge/style/index.js +0 -0
  9. package/es/button/Button.js +51 -59
  10. package/es/button/ButtonGroup.js +31 -23
  11. package/es/button/IconLoading.js +2 -2
  12. package/es/button/__test__/index.test.js +29 -0
  13. package/es/button/index.js +2 -3
  14. package/es/button/style/index.css +1 -1
  15. package/es/card/index.js +42 -54
  16. package/es/card/style/index.css +1 -1
  17. package/es/cascader/Cascader.js +116 -181
  18. package/es/cascader/__test__/index.test.js +283 -0
  19. package/es/cascader/index.js +2 -5
  20. package/es/cascader/menu.js +155 -0
  21. package/es/cascader/style/cascader.css +1 -1
  22. package/es/cascader/style/menu.css +1 -1
  23. package/es/checkbox/{checkbox-legacy/Base.js → Base.js} +31 -46
  24. package/es/checkbox/CheckBox.js +185 -0
  25. package/es/checkbox/index.js +4 -13
  26. package/es/checkbox/style/index.css +1 -1
  27. package/es/collapse/__test__/index.test.js +58 -0
  28. package/es/collapse/index.js +93 -79
  29. package/es/collapse/style/index.css +1 -1
  30. package/es/confirm/index.js +50 -37
  31. package/es/context/index.js +37 -39
  32. package/es/counter/__test__/index.test.js +52 -0
  33. package/es/counter/index.js +270 -6
  34. package/es/counter/style/index.css +1 -1
  35. package/es/date-picker/BasePicker.js +288 -374
  36. package/es/date-picker/Calender.js +90 -326
  37. package/es/date-picker/DatePanel.js +186 -175
  38. package/es/date-picker/DatePicker.js +51 -151
  39. package/es/date-picker/DateRangePanel.js +181 -253
  40. package/es/date-picker/Modal.js +25 -15
  41. package/es/date-picker/Time.js +336 -230
  42. package/es/date-picker/TimePanel.js +32 -27
  43. package/es/date-picker/TimePeriodPanel.js +32 -21
  44. package/es/date-picker/TimePicker.js +40 -42
  45. package/es/date-picker/TimeRangePanel.js +42 -32
  46. package/es/date-picker/Type.js +1 -5
  47. package/es/date-picker/WeekRangePanel.js +150 -237
  48. package/es/date-picker/constants.js +28 -14
  49. package/es/date-picker/dateUtil.js +52 -221
  50. package/es/date-picker/index.js +2 -5
  51. package/es/date-picker/style/index.css +1 -1
  52. package/es/date-picker/util.js +8 -101
  53. package/es/dropdown/Dropdown.js +199 -193
  54. package/es/dropdown/{tests → __test__}/index.test.js +2 -2
  55. package/es/dropdown/index.js +4 -73
  56. package/es/dropdown/style/index.css +1 -1
  57. package/es/dropdown/style/index.js +2 -0
  58. package/es/ficon/index.js +23 -13
  59. package/es/form/index.js +171 -6
  60. package/es/form/{Item.js → item.js} +53 -53
  61. package/es/form/style/index.css +1 -1
  62. package/es/grid/index.js +37 -25
  63. package/es/icon/index.js +32 -21
  64. package/es/index.js +9 -61
  65. package/es/input/index.js +345 -28
  66. package/es/input/style/index.css +1 -1
  67. package/es/input/util.js +18 -26
  68. package/es/lib/withDragDropContext.js +2 -2
  69. package/es/loading/index.js +129 -5
  70. package/es/loading/style/index.css +0 -0
  71. package/es/loading/style/index.js +0 -0
  72. package/es/locales/en-US.js +11 -45
  73. package/es/locales/index.js +2 -16
  74. package/es/locales/zh-CN.js +12 -46
  75. package/es/menu/Item.js +41 -32
  76. package/es/menu/ItemGroup.js +81 -0
  77. package/es/menu/SubMenu.js +74 -55
  78. package/es/menu/Title.js +42 -36
  79. package/es/menu/index.js +419 -12
  80. package/es/menu/style/index.css +1 -1
  81. package/es/modal/__test__/index.test.js +123 -0
  82. package/es/modal/index.js +61 -77
  83. package/es/modal/style/index.css +1 -1
  84. package/es/nav-menu/NavMenu.js +45 -31
  85. package/es/nav-menu/__test__/index.test.js +2 -2
  86. package/es/nav-menu/index.js +2 -2
  87. package/es/notification/__test__/index.test.js +56 -0
  88. package/es/notification/index.js +231 -68
  89. package/es/notification/style/index.css +1 -1
  90. package/es/notification/style/index.js +0 -0
  91. package/es/pagination/Pager.js +8 -6
  92. package/es/pagination/Pagination.js +115 -124
  93. package/es/pagination/__test__/index.test.js +140 -0
  94. package/es/pagination/index.js +8 -9
  95. package/es/pagination/style/index.css +1 -1
  96. package/es/panel/index.js +33 -23
  97. package/es/popover/__test__/index.test.js +2 -2
  98. package/es/popover/index.js +69 -71
  99. package/es/popper/index.js +54 -64
  100. package/es/popper/style/index.css +1 -1
  101. package/es/progress/BarProgress.js +43 -109
  102. package/es/progress/CircleProgress.js +10 -9
  103. package/es/progress/DashboardProgress.js +9 -7
  104. package/es/progress/index.js +100 -8
  105. package/es/progress/style/index.css +1 -1
  106. package/es/radio/{radio-legacy/__test__ → __test__}/index.test.js +10 -10
  107. package/es/radio/index.js +216 -10
  108. package/es/radio/style/index.css +1 -1
  109. package/es/rate/Icons.js +2 -2
  110. package/es/rate/Rate.js +90 -65
  111. package/es/rate/__test__/index.test.js +54 -0
  112. package/es/rate/index.js +2 -5
  113. package/es/rate/style/index.css +1 -1
  114. package/es/select/Option.js +93 -0
  115. package/es/select/Select.js +253 -325
  116. package/es/select/SelectDropdown.js +63 -215
  117. package/es/select/SelectInput.js +54 -88
  118. package/es/select/__test__/index.test.js +429 -0
  119. package/es/select/index.js +4 -6
  120. package/es/select/style/select-dropdown.css +1 -1
  121. package/es/select/style/select-input.css +1 -1
  122. package/es/stepper/index.js +127 -21
  123. package/es/stepper/style/index.css +1 -1
  124. package/es/style/color/colors.css +0 -0
  125. package/es/style/icon/diyIcon.css +1 -1
  126. package/es/style/icon/index.css +1 -1
  127. package/es/style/index.css +0 -0
  128. package/es/style/mixins/colors.css +0 -0
  129. package/es/style/mixins/index.css +0 -0
  130. package/es/style/theme/dark.css +0 -0
  131. package/es/style/theme/default.css +0 -0
  132. package/es/switch/{__tests__ → __test__}/index.test.js +2 -31
  133. package/es/switch/index.js +36 -24
  134. package/es/switch/style/index.css +1 -1
  135. package/es/table/__test__/index.test.js +73 -0
  136. package/es/table/{Body.js → body.js} +52 -36
  137. package/es/table/checkbox/index.js +36 -33
  138. package/es/table/clickOuterside.js +115 -0
  139. package/es/table/{Footer.js → footer.js} +41 -24
  140. package/es/table/{Header.js → header.js} +54 -41
  141. package/es/table/index.js +300 -262
  142. package/es/table/menu/index.js +34 -32
  143. package/es/table/pover.js +154 -0
  144. package/es/table/prefix.js +2 -2
  145. package/es/table/style/Table.css +1 -1
  146. package/es/table/style/index.css +1 -1
  147. package/es/table/tableContent.js +120 -0
  148. package/es/tabs/ItemDropdown.js +51 -39
  149. package/es/tabs/TabPane.js +35 -25
  150. package/es/tabs/Tabs.js +91 -98
  151. package/es/tabs/index.js +3 -9
  152. package/es/tabs/style/index.css +1 -1
  153. package/es/timeline/__test__/index.test.js +49 -0
  154. package/es/timeline/foldingItem.js +82 -0
  155. package/es/timeline/index.js +127 -203
  156. package/es/timeline/style/index.css +1 -1
  157. package/es/tooltip/__test__/index.test.js +67 -0
  158. package/es/tooltip/index.js +39 -86
  159. package/es/tooltip/style/index.css +1 -1
  160. package/es/transfer/Item.js +44 -53
  161. package/es/transfer/__test__/index.test.js +11 -0
  162. package/es/transfer/index.js +443 -4
  163. package/es/transfer/style/index.css +1 -1
  164. package/es/tree/Tree.js +86 -76
  165. package/es/tree/TreeDivider.js +3 -3
  166. package/es/tree/TreeItem.js +108 -204
  167. package/es/tree/TreeNode.js +318 -457
  168. package/es/tree/index.js +2 -9
  169. package/es/tree/style/index.css +1 -1
  170. package/es/tree/util.js +257 -9
  171. package/es/upload/{upload-legacy/Preview.js → Preview.js} +39 -33
  172. package/es/upload/Upload.js +193 -289
  173. package/es/upload/UploadAvatar.js +58 -44
  174. package/es/upload/UploadClick.js +45 -49
  175. package/es/upload/UploadDrag.js +43 -44
  176. package/es/upload/UploadPhoto.js +55 -70
  177. package/es/upload/UploadPictureCard.js +44 -39
  178. package/es/upload/index.js +71 -8
  179. package/es/upload/style/index.css +1 -1
  180. package/es/upload/tool.js +1 -0
  181. package/package.json +4 -1
  182. package/es/_util/SwitchVersion.js +0 -44
  183. package/es/_util/depreactedPropsCompat.js +0 -58
  184. package/es/_util/index.js +0 -32
  185. package/es/alert/Alert.js +0 -134
  186. package/es/alert/__tests__/index.test.js +0 -88
  187. package/es/badge/Badge.js +0 -90
  188. package/es/badge/__tests__/index.test.js +0 -82
  189. package/es/breadcrumb/__tests__/index.test.js +0 -61
  190. package/es/breadcrumb/index.js +0 -93
  191. package/es/breadcrumb/style/index.css +0 -1
  192. package/es/button/__tests__/index.test.js +0 -219
  193. package/es/card/__tests__/index.test.js +0 -169
  194. package/es/carousel/__tests__/index.test.js +0 -104
  195. package/es/carousel/index.js +0 -227
  196. package/es/carousel/style/index.css +0 -1
  197. package/es/carousel/style/index.js +0 -3
  198. package/es/cascader/Menu.js +0 -174
  199. package/es/cascader/__tests__/index.test.js +0 -389
  200. package/es/checkbox/Checkbox.js +0 -144
  201. package/es/checkbox/Group.js +0 -202
  202. package/es/checkbox/__tests__/index.test.js +0 -226
  203. package/es/checkbox/checkbox-legacy/CheckBox.js +0 -165
  204. package/es/checkbox/checkbox-legacy/index.js +0 -15
  205. package/es/checkbox/checkbox-legacy/style/index.css +0 -1
  206. package/es/checkbox/checkbox-legacy/style/index.js +0 -3
  207. package/es/collapse/__tests__/index.test.js +0 -111
  208. package/es/counter/Counter.js +0 -343
  209. package/es/counter/__tests__/index.test.js +0 -134
  210. package/es/counter/counter-legacy/index.js +0 -271
  211. package/es/date-picker/TimeList.js +0 -254
  212. package/es/date-picker/YMRangePanel.js +0 -372
  213. package/es/date-picker/__tests__/index.test.js +0 -961
  214. package/es/date-picker/datepicker-legacy/BasePicker.js +0 -519
  215. package/es/date-picker/datepicker-legacy/Calender.js +0 -430
  216. package/es/date-picker/datepicker-legacy/DatePanel.js +0 -463
  217. package/es/date-picker/datepicker-legacy/DatePicker.js +0 -107
  218. package/es/date-picker/datepicker-legacy/DateRangePanel.js +0 -496
  219. package/es/date-picker/datepicker-legacy/Modal.js +0 -71
  220. package/es/date-picker/datepicker-legacy/Time.js +0 -413
  221. package/es/date-picker/datepicker-legacy/TimePanel.js +0 -93
  222. package/es/date-picker/datepicker-legacy/TimePeriodPanel.js +0 -126
  223. package/es/date-picker/datepicker-legacy/TimePicker.js +0 -82
  224. package/es/date-picker/datepicker-legacy/TimeRangePanel.js +0 -98
  225. package/es/date-picker/datepicker-legacy/Type.js +0 -31
  226. package/es/date-picker/datepicker-legacy/WeekRangePanel.js +0 -345
  227. package/es/date-picker/datepicker-legacy/constants.js +0 -79
  228. package/es/date-picker/datepicker-legacy/dateUtil.js +0 -258
  229. package/es/date-picker/datepicker-legacy/index.js +0 -15
  230. package/es/date-picker/datepicker-legacy/local.js +0 -11
  231. package/es/date-picker/datepicker-legacy/style/index.css +0 -1
  232. package/es/date-picker/datepicker-legacy/style/index.js +0 -3
  233. package/es/date-picker/datepicker-legacy/style/timepicker.css +0 -1
  234. package/es/date-picker/datepicker-legacy/util.js +0 -60
  235. package/es/date-picker/toLunar.js +0 -172
  236. package/es/dropdown/DropdownButton.js +0 -106
  237. package/es/dropdown/DropdownMenu.js +0 -111
  238. package/es/dropdown/DropdownMenuItem.js +0 -178
  239. package/es/dropdown/__tests__/index.test.js +0 -317
  240. package/es/dropdown/utils.js +0 -35
  241. package/es/form/Form.js +0 -184
  242. package/es/form/__tests__/index.test.js +0 -575
  243. package/es/grid/__tests__/index.test.js +0 -104
  244. package/es/input/Input.js +0 -412
  245. package/es/input/__tests__/index.test.js +0 -381
  246. package/es/input/input-legacy/index.js +0 -353
  247. package/es/input/input-legacy/util.js +0 -176
  248. package/es/loading/Loading.js +0 -181
  249. package/es/loading/__tests__/index.test.js +0 -110
  250. package/es/locales/zh-Hant-HK.js +0 -121
  251. package/es/locales/zh-Hant-TW.js +0 -123
  252. package/es/menu/Menu.js +0 -422
  253. package/es/menu/__tests__/index.test.js +0 -279
  254. package/es/message/__tests__/index.test.js +0 -75
  255. package/es/message/index.js +0 -58
  256. package/es/message/style/index.css +0 -1
  257. package/es/message/style/index.js +0 -5
  258. package/es/modal/__tests__/index.test.js +0 -178
  259. package/es/nav-menu/__tests__/index.test.js +0 -27
  260. package/es/notice/Notice.js +0 -142
  261. package/es/notice/NoticeContainer.js +0 -113
  262. package/es/notice/__tests__/index.test.js +0 -174
  263. package/es/notice/index.js +0 -66
  264. package/es/notice/style/index.css +0 -1
  265. package/es/notice/style/index.js +0 -5
  266. package/es/notification/HandleNotification/index.js +0 -224
  267. package/es/notification/HandleNotification/style/index.css +0 -1
  268. package/es/notification/HandleNotification/style/index.js +0 -5
  269. package/es/notification/__tests__/index.test.js +0 -118
  270. package/es/pagination/__tests__/index.test.js +0 -248
  271. package/es/popover/__tests__/index.test.js +0 -152
  272. package/es/preview/index.js +0 -527
  273. package/es/preview/style/index.css +0 -1
  274. package/es/preview/style/index.js +0 -3
  275. package/es/progress/Progress.js +0 -110
  276. package/es/progress/__tests__/index.test.js +0 -131
  277. package/es/radio/Group.js +0 -203
  278. package/es/radio/Radio.js +0 -151
  279. package/es/radio/__tests__/index.test.js +0 -128
  280. package/es/radio/radio-legacy/index.js +0 -222
  281. package/es/radio/radio-legacy/style/index.css +0 -1
  282. package/es/radio/radio-legacy/style/index.js +0 -3
  283. package/es/rate/__tests__/index.test.js +0 -124
  284. package/es/select/__tests__/index.test.js +0 -505
  285. package/es/select/select-legacy/Option.js +0 -81
  286. package/es/select/select-legacy/Select.js +0 -710
  287. package/es/select/select-legacy/SelectDropdown.js +0 -164
  288. package/es/select/select-legacy/SelectInput.js +0 -312
  289. package/es/select/select-legacy/common.js +0 -19
  290. package/es/select/select-legacy/index.js +0 -16
  291. package/es/stepper/Stepper.js +0 -151
  292. package/es/stepper/__tests__/index.test.js +0 -161
  293. package/es/table/ClickOuterside.js +0 -103
  294. package/es/table/TableContent.js +0 -109
  295. package/es/table/__tests__/index.test.js +0 -133
  296. package/es/table/checkbox/style/index.css +0 -1
  297. package/es/table/checkbox/style/index.js +0 -3
  298. package/es/tabs/__tests__/index.test.js +0 -333
  299. package/es/tabs/tabs-legacy/ItemDropdown.js +0 -170
  300. package/es/tabs/tabs-legacy/TabPane.js +0 -78
  301. package/es/tabs/tabs-legacy/Tabs.js +0 -299
  302. package/es/tabs/tabs-legacy/index.js +0 -18
  303. package/es/tabs/tabs-legacy/style/index.css +0 -1
  304. package/es/tabs/tabs-legacy/style/index.js +0 -3
  305. package/es/tag/__tests__/index.test.js +0 -46
  306. package/es/tag/index.js +0 -94
  307. package/es/tag/style/index.css +0 -1
  308. package/es/tag/style/index.js +0 -3
  309. package/es/timeline/__tests__/index.test.js +0 -198
  310. package/es/tooltip/__tests__/index.test.js +0 -170
  311. package/es/transfer/Transfer.js +0 -566
  312. package/es/transfer/__tests__/index.test.js +0 -210
  313. package/es/tree/IconLoading.js +0 -38
  314. package/es/tree/__tests__/index.test.js +0 -603
  315. package/es/tree/tree-legacy/Tree.js +0 -337
  316. package/es/tree/tree-legacy/TreeDivider.js +0 -25
  317. package/es/tree/tree-legacy/TreeItem.js +0 -333
  318. package/es/tree/tree-legacy/TreeNode.js +0 -719
  319. package/es/tree/tree-legacy/index.js +0 -13
  320. package/es/tree/tree-legacy/style/index.css +0 -1
  321. package/es/tree/tree-legacy/style/index.js +0 -3
  322. package/es/tree/tree-legacy/util.js +0 -434
  323. package/es/upload/__tests__/index.test.js +0 -760
  324. package/es/upload/main.js +0 -91
  325. package/es/upload/upload-legacy/Upload.js +0 -435
  326. package/es/upload/upload-legacy/UploadAvatar.js +0 -322
  327. package/es/upload/upload-legacy/UploadClick.js +0 -125
  328. package/es/upload/upload-legacy/UploadDrag.js +0 -180
  329. package/es/upload/upload-legacy/UploadPhoto.js +0 -183
  330. package/es/upload/upload-legacy/UploadPictureCard.js +0 -126
  331. package/es/upload/upload-legacy/index.js +0 -75
  332. package/es/upload/upload-legacy/style/index.css +0 -1
  333. package/es/upload/upload-legacy/style/index.js +0 -5
  334. package/es/upload/upload-legacy/tool.js +0 -84
  335. package/es/watermark/index.js +0 -101
  336. package/es/watermark/watermark.js +0 -252
  337. /package/es/checkbox/{checkbox-legacy/common.js → common.js} +0 -0
  338. /package/es/{breadcrumb/style → style}/index.js +0 -0
  339. /package/es/upload/{upload-legacy/style → style}/preview.css +0 -0
  340. /package/es/upload/{upload-legacy/style → style}/preview.js +0 -0
@@ -1,760 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- var _react = _interopRequireDefault(require("react"));
6
-
7
- var _enzyme = require("enzyme");
8
-
9
- var _main = _interopRequireDefault(require("../main"));
10
-
11
- var _sinon = _interopRequireDefault(require("sinon"));
12
-
13
- function trigger(elem, event) {
14
- var myEvent = document.createEvent('Event'); // 初始化这个事件对象,为它提高需要的“特性”
15
-
16
- myEvent.initEvent(event, true, true); //执行事件
17
-
18
- elem.dispatchEvent(myEvent);
19
- }
20
-
21
- describe('Upload', function () {
22
- var types = ['default', 'drag', 'pictureCard', 'avatar', 'photo'];
23
- var localeDatas = {
24
- upload: {
25
- buttonText: '本地上传',
26
- uploadSuccess: '上传成功',
27
- uploadFailed: '上传失败',
28
- cancel: '取消',
29
- "delete": '删除',
30
- drag: '拖拽文件上传',
31
- dragTips: '请点击或拖拽文件上传',
32
- dragTipsLimited: '数量已达上限',
33
- preview: '预览'
34
- }
35
- };
36
- var xhr, requests;
37
- var clock;
38
- beforeEach(function () {
39
- clock = _sinon["default"].useFakeTimers();
40
- xhr = _sinon["default"].useFakeXMLHttpRequest();
41
- requests = [];
42
-
43
- xhr.onCreate = function (req) {
44
- return requests.push(req);
45
- };
46
- });
47
- afterEach(function () {
48
- clock.restore();
49
- xhr.restore();
50
- });
51
- describe('PropTypes', function () {
52
- it('type', function () {
53
- var wrapper = (0, _enzyme.mount)( /*#__PURE__*/_react["default"].createElement("div", null, types.map(function (type, index) {
54
- return /*#__PURE__*/_react["default"].createElement(_main["default"], {
55
- type: type,
56
- key: index,
57
- localeDatas: localeDatas
58
- });
59
- })));
60
- types.forEach(function (type) {
61
- if (type === 'pictureCard') {
62
- expect(wrapper.find(".hi-upload--picture-card")).toHaveLength(1);
63
- wrapper.find('.hi-upload--picture-card').find('button').simulate('click');
64
- expect(wrapper.find('.hi-upload--picture-card').find('input').instance().value).toBe('');
65
- } else if (type === 'default') {
66
- expect(wrapper.find(".hi-upload--normal")).toHaveLength(1);
67
- } else {
68
- expect(wrapper.find(".hi-upload--".concat(type))).toHaveLength(1);
69
- }
70
- });
71
- wrapper.unmount();
72
- });
73
- it('accept', function () {
74
- types.forEach(function (type) {
75
- var wrapper = (0, _enzyme.mount)( /*#__PURE__*/_react["default"].createElement(_main["default"], {
76
- accept: "image/png",
77
- type: type,
78
- localeDatas: localeDatas
79
- }));
80
- expect(wrapper.find('input').getDOMNode().getAttribute('accept')).toEqual('image/png');
81
- wrapper.unmount();
82
- });
83
- });
84
- it('disabled', function () {
85
- types.forEach(function (type) {
86
- var wrapper = (0, _enzyme.mount)( /*#__PURE__*/_react["default"].createElement(_main["default"], {
87
- disabled: true,
88
- type: type,
89
- localeDatas: localeDatas
90
- }));
91
-
92
- if (type === 'default') {
93
- expect(wrapper.find('.hi-upload').find('button').hasClass('hi-btn--disabled')).toEqual(true);
94
- expect(wrapper.find('.hi-upload').find('button').prop('disabled')).toEqual(true);
95
- expect(wrapper.find('.hi-upload').find('input').prop('disabled')).toEqual('disabled');
96
- wrapper.setProps({
97
- disabled: false
98
- });
99
- expect(wrapper.find('.hi-upload').find('button').hasClass('hi-btn--disabled')).toEqual(false);
100
- expect(wrapper.find('.hi-upload').find('button').prop('disabled')).toEqual(undefined);
101
- expect(wrapper.find('.hi-upload').find('input').prop('disabled')).toEqual(false);
102
- } else if (type === 'drag' || type === 'photo') {
103
- expect(wrapper.find('.hi-upload.hi-upload--disabled')).toHaveLength(1);
104
- expect(wrapper.find('.hi-upload').find('input').prop('disabled')).toEqual('disabled');
105
- wrapper.setProps({
106
- disabled: false
107
- });
108
- expect(wrapper.find('.hi-upload').find('input').prop('disabled')).toEqual(false);
109
- } else if (type === 'avatar') {
110
- expect(wrapper.find('.hi-upload').find('input').prop('disabled')).toEqual('disabled');
111
- wrapper.setProps({
112
- disabled: false
113
- });
114
- expect(wrapper.find('.hi-upload').find('input').prop('disabled')).toEqual(false);
115
- } else if (type === 'pictureCard') {
116
- expect(wrapper.find('.hi-upload').find('input').prop('disabled')).toEqual('disabled');
117
- expect(wrapper.find('.hi-upload').find('button').hasClass('hi-btn--disabled')).toEqual(true);
118
- wrapper.setProps({
119
- disabled: false
120
- });
121
- expect(wrapper.find('.hi-upload').find('input').prop('disabled')).toEqual(false);
122
- expect(wrapper.find('.hi-upload').find('button').hasClass('hi-btn--disabled')).toEqual(false);
123
- }
124
-
125
- wrapper.unmount();
126
- });
127
- });
128
- it('loading', function () {
129
- var wrapper = (0, _enzyme.mount)( /*#__PURE__*/_react["default"].createElement(_main["default"], {
130
- disabled: true,
131
- localeDatas: localeDatas
132
- }));
133
- expect(wrapper.find('.hi-upload').find('button').hasClass('hi-btn--disabled')).toEqual(true);
134
- wrapper.setProps({
135
- disabled: false
136
- });
137
- expect(wrapper.find('.hi-upload').find('button').hasClass('hi-btn--disabled')).toEqual(false);
138
- wrapper.unmount();
139
- });
140
- it('content', function () {
141
- var wrapper = (0, _enzyme.mount)( /*#__PURE__*/_react["default"].createElement(_main["default"], {
142
- localeDatas: localeDatas
143
- }));
144
- expect(wrapper.find('.hi-upload').find('button').text()).toEqual('本地上传');
145
- wrapper.setProps({
146
- content: 'Upload'
147
- });
148
- expect(wrapper.find('.hi-upload').find('button').text()).toEqual('Upload');
149
- wrapper.unmount();
150
- });
151
- });
152
- it('can upload fileType', function () {
153
- var fileTypes = [{
154
- type: 'jpg',
155
- fileType: 'img'
156
- }, {
157
- type: 'rar',
158
- fileType: 'zip'
159
- }, {
160
- type: 'doc',
161
- fileType: 'word'
162
- }, {
163
- type: 'pdf',
164
- fileType: 'pdf'
165
- }, {
166
- type: 'ppt',
167
- fileType: 'ppt'
168
- }, {
169
- type: 'xls',
170
- fileType: 'excel'
171
- }, {
172
- type: 'key',
173
- fileType: 'key'
174
- }, {
175
- type: 'exe',
176
- fileType: 'exe'
177
- }, {
178
- type: 'mp4',
179
- fileType: 'video'
180
- }, {
181
- type: 'mp3',
182
- fileType: 'audio'
183
- }, {
184
- type: 'txt',
185
- fileType: 'other'
186
- }];
187
- fileTypes.map(function (ft) {
188
- var mockFile = new File(['foo'], "foo.".concat(ft.type));
189
- var wrapper = (0, _enzyme.mount)( /*#__PURE__*/_react["default"].createElement(_main["default"], {
190
- localeDatas: localeDatas,
191
- uploadAction: "https://www.mocky.io/v2/5dc3b4413000007600347501"
192
- }));
193
- wrapper.find('.hi-upload').find('input').simulate('change', {
194
- target: {
195
- files: [mockFile]
196
- }
197
- });
198
- expect(wrapper.instance().uploadRef.current.state['fileList'][wrapper.instance().uploadRef.current.state['fileList'].length - 1].fileType === ft.fileType);
199
- wrapper.unmount();
200
- });
201
- });
202
- it('can upload', function () {
203
- var mockFile = new File(['foo'], 'foo.jpg');
204
- var wrapper = (0, _enzyme.mount)( /*#__PURE__*/_react["default"].createElement(_main["default"], {
205
- localeDatas: localeDatas,
206
- uploadAction: "https://www.mocky.io/v2/5dc3b4413000007600347501"
207
- }));
208
- wrapper.find('.hi-upload').find('input').simulate('change', {
209
- target: {
210
- files: [mockFile]
211
- }
212
- });
213
- requests[0].respond(200, {}, "[\"\"]");
214
- wrapper.find('.hi-upload').find('button').simulate('click');
215
- expect(wrapper.find('input').instance().value).toBe('');
216
- wrapper.unmount();
217
- });
218
- it('on error', function () {
219
- var mockFile = new File(['foo'], 'foo.txt', {
220
- type: 'text/plain'
221
- });
222
- var wrapper = (0, _enzyme.mount)( /*#__PURE__*/_react["default"].createElement(_main["default"], {
223
- localeDatas: localeDatas,
224
- uploadAction: "https://www.mocky.io/v2/5dc3b4413000007600347501"
225
- }));
226
- clock.tick(400);
227
- wrapper.find('.hi-upload').find('input').simulate('change', {
228
- target: {
229
- files: [mockFile]
230
- }
231
- });
232
- requests[0].respond(500, {}, "[\"\"]");
233
- wrapper.unmount();
234
- });
235
- it('avatar', function () {
236
- // TODO: 测试覆盖率的关键在于 mock fileReader
237
- var dummyFileReader = {
238
- result: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH0AAAB9CAYAAACPgGwlAAAFJElEQVR4Xu2dS0hUURzG/1Yqlj2otJe10AqCoiJaFFTUpgcUhLaKCIogKCEiCl0U1SIIF1EIQlFEtCmkpbWSHlAQYRYUlI9Ie6nYmI9hfIx1LpzL3PGO/aeuM/r/f7PRufe7d873/ea75xw3ZjTumDtMeKlKIAPQVfF2zAK6PuaArpA5oAO6xgQUesacDugKE1BoGU0HdIUJKLSMpgO6wgQUWkbTAV1hAgoto+mArjABhZbRdEBXmIBCy2g6oCtMQKFlNB3QFSag0DKaDugKE1BoGU0HdIUJKLSMpgO6wgQUWkbTAV1hAgoto+mArjABhZbRdEBXmIBCy2g6oCtMQKFlNB3QFSag0DKaDugKE1BoGU0HdIUJKLSMpgO6wgQUWkbTAV1hAgoto+mArjABhZbRdEBXmIBCy2g6oCtMQKFlNB3QFSag0DKaDugKE1BoGU0HdIUJKLQ8bpo+fft+ylxYSJ23LvpisOfNST/N7ENniYa9/0xy4GsTdT+6+09Yx9t4/slEgovSDt2EO3P3YcoqWuUMsWln3oihFlTWUlbhSvf4UKid2iqOUfhVrXussKZ9xHXh10/oW1lxUnmNt/EkNXimOK3QTTtn7Sv1DDUees66rTT/3B0a/NFCvc9raOqf9+YL0PfiIX0/f8ADPdrXTZEPde6xyMd66rx5wXlvnwThN8/cL4ttc7S3i0L3rjqaVI2HyWdMZGmFbhwtvv7cgZm7ZS9NyS/wbboBb1ttwQy2tdLng2s90OOPxSa24FI15azZTAOtDdRyZAOZe84ru0GTps2g0P1r7pcjVeMZE5rMm6Yduh3nktt1CaHHesk/XUW5W4sp8v4lfTm5ywN9eCBCQz/baOBLE0Ua3rgg4z/DPCUmz5xD2SvWU6IpIBXjYTIKXDahoNtHvUmho/KMZ5HmN6f31FZT2+Wjbmix12dkZtNoTwYO9P8dT+A0mTecMNBNwPmnKmnyrDyKhxnv1U4B0d5f9KmkyHPaPinMwfYrJxKu7v8GPajxMDkFKpsQ0JMJ2KZjmm8e9817CjxNt/O4Odjf+JZaj2/zDXQ06EGNJ1CSSdws7dDNAsvsr7OXr3UWVeG6x87wv5WXOD9jAzZbtf7md669nscP3KbOLa2gaE+Xc27axl2UWbB0xLxvFmnmuJnTzU/7e+wuIJXjSYJToNK0Q/ebi41Du3Xz20bZBGJX3fH3Mav0jqpyd9Xvt3o3W0Ezt492H/tZQY8nUIpJ3izt0J39s8/L7q9N03NWb/LVhOuferZyWYuX0WDnD2evHv+XOPs5sdc4+/RFRX+eECFnn25eqRpPkpwClacdeqBucDNWAoDOikmWCNBl8WS5AXRWTLJEgC6LJ8sNoLNikiUCdFk8WW4AnRWTLBGgy+LJcgPorJhkiQBdFk+WG0BnxSRLBOiyeLLcADorJlkiQJfFk+UG0FkxyRIBuiyeLDeAzopJlgjQZfFkuQF0VkyyRIAuiyfLDaCzYpIlAnRZPFluAJ0VkywRoMviyXID6KyYZIkAXRZPlhtAZ8UkSwTosniy3AA6KyZZIkCXxZPlBtBZMckSAbosniw3gM6KSZYI0GXxZLkBdFZMskSALosnyw2gs2KSJQJ0WTxZbgCdFZMsEaDL4slyA+ismGSJAF0WT5YbQGfFJEsE6LJ4stwAOismWSJAl8WT5QbQWTHJEgG6LJ4sN4DOikmWCNBl8WS5AXRWTLJEgC6LJ8sNoLNikiUCdFk8WW4AnRWTLNFvXskYA3TG3JwAAAAASUVORK5CYII='
239
- };
240
-
241
- dummyFileReader.readAsDataURL = function (file) {
242
- if (dummyFileReader.onload) {
243
- dummyFileReader.onload({
244
- target: {
245
- result: dummyFileReader.result
246
- }
247
- });
248
- }
249
- };
250
-
251
- window.FileReader = jest.fn(function () {
252
- return dummyFileReader;
253
- });
254
- Object.defineProperty(Image.prototype, 'complete', {
255
- value: true
256
- });
257
- Object.defineProperty(Image.prototype, 'naturalHeight', {
258
- get: function get() {
259
- return 120;
260
- }
261
- });
262
- Object.defineProperty(Image.prototype, 'naturalWidth', {
263
- get: function get() {
264
- return 120;
265
- }
266
- });
267
- var wrapper = (0, _enzyme.mount)( /*#__PURE__*/_react["default"].createElement(_main["default"], {
268
- type: "avatar",
269
- uploadAction: "http://www.mocky.io/v2/5dc3b4413000007600347501",
270
- onChange: function onChange(file, fileList, response) {
271
- file.id = 'file唯一标识';
272
- },
273
- onRemove: function onRemove(file, fileList, index) {
274
- return new Promise(function (resolve, reject) {
275
- return resolve(true);
276
- });
277
- },
278
- localeDatas: localeDatas,
279
- params: {
280
- id: 'uid',
281
- channel: 'youpin'
282
- },
283
- name: 'files[]',
284
- fileList: []
285
- }));
286
- var mockFile = new File(['foo'], 'foo.txt', {
287
- type: 'text/plain'
288
- });
289
- wrapper.find('input').simulate('change', {
290
- target: {
291
- files: [mockFile]
292
- }
293
- });
294
- expect(wrapper.instance().uploadRef.current.state['showCropperModal']).toBeTruthy();
295
- wrapper.find('button').at(1).simulate('click');
296
- wrapper.find('button').at(0).simulate('click');
297
- expect(wrapper.instance().uploadRef.current.state['showCropperModal']).toBeFalsy();
298
- wrapper.find('.hi-upload__item-mask').at(0).simulate('click');
299
- wrapper.find('.hi-preview__close').simulate('click');
300
- expect(wrapper.instance().uploadRef.current.state['showModal']).toBeFalsy();
301
- wrapper.unmount();
302
- });
303
- it('should can preview', function () {
304
- var wrapper = (0, _enzyme.mount)( /*#__PURE__*/_react["default"].createElement(_main["default"], {
305
- type: "photo",
306
- uploadAction: "http://www.mocky.io/v2/5dc3b4413000007600347501",
307
- onChange: function onChange(file, fileList, response) {
308
- file.id = 'file唯一标识';
309
- },
310
- onRemove: function onRemove(file, fileList, index) {
311
- return new Promise(function (resolve, reject) {
312
- return resolve(true);
313
- });
314
- },
315
- localeDatas: localeDatas,
316
- params: {
317
- id: 'uid',
318
- channel: 'youpin'
319
- },
320
- name: 'files[]',
321
- fileList: [{
322
- name: 'b.png',
323
- fileType: 'img',
324
- uploadState: 'success',
325
- url: 'https://i1.mifile.cn/f/i/2018/mix3/specs_black.png'
326
- }, {
327
- name: 'a.png',
328
- fileType: 'img',
329
- uploadState: 'success',
330
- url: 'https://i1.mifile.cn/f/i/2018/mix3/specs_black.png'
331
- }]
332
- }));
333
- wrapper.find('.hi-upload__item').at(0).simulate('click');
334
- expect(wrapper.instance().uploadRef.current.state['showModal']).toBeTruthy();
335
- wrapper.find('Preview Icon').at(0).simulate('click');
336
- wrapper.find('Preview Icon').at(1).simulate('click');
337
- wrapper.find('Preview Icon').at(2).simulate('click');
338
- wrapper.find('Preview Icon').at(3).simulate('click');
339
- wrapper.find('Preview Icon').at(4).simulate('click');
340
- wrapper.find('Preview Icon').at(5).simulate('click');
341
- wrapper.find('Preview Icon').at(6).simulate('click');
342
- expect(wrapper.find('Preview img').at(0).prop('style').transform).toEqual('translateX(0px) translateY(0px) rotate(0deg) scaleX(1) scaleY(1)');
343
- wrapper.find('.hi-preview__image').simulate('mousedown', {
344
- target: {
345
- nativeEvent: {
346
- clientX: 1214,
347
- clientY: 350
348
- }
349
- }
350
- });
351
- wrapper.find('.hi-preview').simulate('mousemove');
352
- wrapper.find('.hi-preview__image').simulate('mouseup', {
353
- target: {
354
- nativeEvent: {
355
- clientX: 987,
356
- clientY: 349
357
- }
358
- }
359
- });
360
- wrapper.find('.hi-preview').simulate('wheel', {
361
- wheelDelta: 1
362
- });
363
- wrapper.find('.hi-preview').simulate('wheel', {
364
- wheelDelta: 0
365
- });
366
- wrapper.find('.hi-preview').simulate('wheel', {
367
- detail: 1
368
- }); // expect(wrapper.find('Preview img').at(0).prop('style').transform).toEqual(
369
- // 'translateX(633px) translateY(46px) rotate(0deg) scaleX(1) scaleY(1)'
370
- // )
371
-
372
- wrapper.find('.hi-preview__close').simulate('click');
373
- expect(wrapper.instance().uploadRef.current.state['showModal']).toBeFalsy();
374
- wrapper.find('input').simulate('click');
375
- expect(wrapper.find('input').instance().value).toBe('');
376
- wrapper.unmount();
377
- });
378
- it('should can drag', function () {
379
- var wrapper = (0, _enzyme.mount)( /*#__PURE__*/_react["default"].createElement(_main["default"], {
380
- type: "drag",
381
- uploadAction: "http://www.mocky.io/v2/5dc3b4413000007600347501",
382
- onChange: function onChange(file, fileList, response) {
383
- file.id = 'file唯一标识';
384
- },
385
- onRemove: function onRemove(file, fileList, index) {
386
- return new Promise(function (resolve, reject) {
387
- return resolve(true);
388
- });
389
- },
390
- localeDatas: localeDatas,
391
- params: {
392
- id: 'uid',
393
- channel: 'youpin'
394
- },
395
- name: 'files[]',
396
- defaultFileList: [{
397
- name: 'b.png',
398
- fileType: 'img',
399
- uploadState: 'success',
400
- url: 'https://i1.mifile.cn/f/i/2018/mix3/specs_black.png'
401
- }]
402
- }));
403
- var mockFile = new File(['foo'], 'foo.txt', {
404
- type: 'text/plain'
405
- });
406
- wrapper.find('.hi-upload--drag').simulate('dragover', {
407
- dataTransfer: {
408
- files: [mockFile]
409
- }
410
- });
411
- expect(wrapper.instance().uploadRef.current.state['overEvent']).toBeTruthy();
412
- wrapper.find('.hi-upload--drag').simulate('dragleave', {
413
- dataTransfer: {
414
- files: [mockFile]
415
- }
416
- });
417
- expect(wrapper.instance().uploadRef.current.state['overEvent']).toBeFalsy();
418
- wrapper.find('.hi-upload--drag').simulate('drop', {
419
- dataTransfer: {
420
- files: [mockFile]
421
- }
422
- });
423
- expect(wrapper.find('.hi-upload').find('ul.hi-upload__list').find('li.hi-upload__item')).toHaveLength(3);
424
- wrapper.unmount();
425
- });
426
- it('show upload list', function () {
427
- var mockFile = new File(['foo'], 'foo.txt', {
428
- type: 'text/plain'
429
- }); // TODO: 目前只有 type === 'default' 和 type === 'pictureCard' 支持 showUploadList 为 false 时隐藏上传列表
430
-
431
- types.forEach(function (type, index) {
432
- var wrapper = (0, _enzyme.mount)( /*#__PURE__*/_react["default"].createElement(_main["default"], {
433
- localeDatas: localeDatas,
434
- type: type,
435
- uploadAction: "https://www.mocky.io/v2/5dc3b4413000007600347501"
436
- }));
437
- wrapper.find('.hi-upload').find('input').simulate('change', {
438
- target: {
439
- files: [mockFile]
440
- }
441
- });
442
- expect(wrapper.find('.hi-upload').find('ul.hi-upload__list')).toHaveLength(1);
443
- wrapper.setProps({
444
- showUploadList: false
445
- });
446
-
447
- if (['default', 'pictureCard'].includes(type)) {
448
- expect(wrapper.find('.hi-upload').find('ul.hi-upload__list')).toHaveLength(0);
449
- }
450
- });
451
- });
452
- it('show default file list', function () {
453
- types.forEach(function (type) {
454
- var wrapper = (0, _enzyme.mount)( /*#__PURE__*/_react["default"].createElement(_main["default"], {
455
- localeDatas: localeDatas,
456
- type: type,
457
- defaultFileList: [{
458
- name: 'a.png',
459
- fileType: 'img',
460
- uploadState: 'success',
461
- url: 'https://i8.mifile.cn/a1/pms_1531116957.78852376.jpg'
462
- }, {
463
- name: 'b.png',
464
- fileType: 'img',
465
- uploadState: 'error',
466
- url: 'https://i1.mifile.cn/f/i/2018/mix3/specs_black.png'
467
- }],
468
- uploadAction: "https://www.mocky.io/v2/5dc3b4413000007600347501"
469
- }));
470
-
471
- if (['default', 'pictureCard'].includes(type)) {
472
- expect(wrapper.find('.hi-upload').find('ul.hi-upload__list').find('li.hi-upload__item')).toHaveLength(2);
473
- } else if (type === 'avatar') {
474
- expect(wrapper.find('.hi-upload').find('ul.hi-upload__list').find('li.hi-upload__item')).toHaveLength(1);
475
- } else {
476
- expect(wrapper.find('.hi-upload').find('ul.hi-upload__list').find('li.hi-upload__item')).toHaveLength(3);
477
- }
478
-
479
- wrapper.unmount();
480
- });
481
- });
482
- it('fileList has priority over defaultFileList', function () {
483
- types.forEach(function (type) {
484
- var wrapper = (0, _enzyme.mount)( /*#__PURE__*/_react["default"].createElement(_main["default"], {
485
- localeDatas: localeDatas,
486
- type: type,
487
- fileList: [{
488
- name: 'a.png',
489
- fileType: 'img',
490
- uploadState: 'success',
491
- url: 'https://i8.mifile.cn/a1/pms_1531116957.78852376.jpg'
492
- }, {
493
- name: 'b.png',
494
- fileType: 'img',
495
- uploadState: 'error',
496
- url: 'https://i1.mifile.cn/f/i/2018/mix3/specs_black.png'
497
- }],
498
- defaultFileList: [{
499
- name: 'a.png',
500
- fileType: 'img',
501
- uploadState: 'success',
502
- url: 'https://i8.mifile.cn/a1/pms_1531116957.78852376.jpg'
503
- }],
504
- uploadAction: "https://www.mocky.io/v2/5dc3b4413000007600347501"
505
- }));
506
-
507
- if (['default', 'pictureCard'].includes(type)) {
508
- expect(wrapper.find('.hi-upload').find('ul.hi-upload__list').find('li.hi-upload__item')).toHaveLength(2);
509
- } else if (type === 'avatar') {
510
- expect(wrapper.find('.hi-upload').find('ul.hi-upload__list').find('li.hi-upload__item')).toHaveLength(1);
511
- } else {
512
- expect(wrapper.find('.hi-upload').find('ul.hi-upload__list').find('li.hi-upload__item')).toHaveLength(3);
513
- }
514
-
515
- wrapper.unmount();
516
- });
517
- });
518
- it('file list is controlled', function () {
519
- var mockFile = new File(['foo'], 'foo.txt', {
520
- type: 'text/plain'
521
- });
522
- types.forEach(function (type, index) {
523
- var wrapper = (0, _enzyme.mount)( /*#__PURE__*/_react["default"].createElement(_main["default"], {
524
- localeDatas: localeDatas,
525
- type: type,
526
- fileList: [{
527
- name: 'a.png',
528
- fileType: 'img',
529
- uploadState: 'success',
530
- url: 'https://i8.mifile.cn/a1/pms_1531116957.78852376.jpg'
531
- }],
532
- uploadAction: "https://www.mocky.io/v2/5dc3b4413000007600347501"
533
- })); // avatar 类型下只允许展示一张图片
534
-
535
- if (type !== 'avatar') {
536
- wrapper.find('.hi-upload').find('input').simulate('change', {
537
- target: {
538
- files: [mockFile]
539
- }
540
- });
541
- }
542
-
543
- if (['default', 'pictureCard'].includes(type)) {
544
- expect(wrapper.find('.hi-upload').find('ul.hi-upload__list').find('li.hi-upload__item')).toHaveLength(2);
545
- } else if (type === 'avatar') {
546
- expect(wrapper.find('.hi-upload').find('ul.hi-upload__list').find('li.hi-upload__item')).toHaveLength(1);
547
- } else {
548
- expect(wrapper.find('.hi-upload').find('ul.hi-upload__list').find('li.hi-upload__item')).toHaveLength(3);
549
- }
550
-
551
- wrapper.setProps({
552
- defaultFileList: [{
553
- name: 'a.png',
554
- fileType: 'img',
555
- uploadState: 'success',
556
- url: 'https://i8.mifile.cn/a1/pms_1531116957.78852376.jpg'
557
- }, {
558
- name: 'b.png',
559
- fileType: 'img',
560
- uploadState: 'error',
561
- url: 'https://i1.mifile.cn/f/i/2018/mix3/specs_black.png'
562
- }]
563
- });
564
-
565
- if (['default', 'pictureCard'].includes(type)) {
566
- expect(wrapper.find('.hi-upload').find('ul.hi-upload__list').find('li.hi-upload__item')).toHaveLength(2);
567
- } else if (type === 'avatar') {
568
- expect(wrapper.find('.hi-upload').find('ul.hi-upload__list').find('li.hi-upload__item')).toHaveLength(1);
569
- } else {
570
- expect(wrapper.find('.hi-upload').find('ul.hi-upload__list').find('li.hi-upload__item')).toHaveLength(3);
571
- }
572
-
573
- wrapper.setProps({
574
- fileList: []
575
- });
576
-
577
- if (['default', 'pictureCard'].includes(type)) {
578
- expect(wrapper.find('.hi-upload').find('ul.hi-upload__list').find('li.hi-upload__item')).toHaveLength(0);
579
- } else if (['avatar', 'photo'].includes(type)) {
580
- expect(wrapper.find('.hi-upload').find('ul.hi-upload__list').find('li.hi-upload__item')).toHaveLength(1);
581
- } else {
582
- expect(wrapper.find('.hi-upload').find('ul.hi-upload__list').find('li.hi-upload__item')).toHaveLength(0);
583
- }
584
-
585
- wrapper.unmount();
586
- });
587
- });
588
- it('should stop upload when return value of beforeUpload is not true', function () {
589
- var fileList = [{
590
- name: 'a.png',
591
- fileType: 'img',
592
- uploadState: 'success',
593
- url: 'https://i8.mifile.cn/a1/pms_1531116957.78852376.jpg'
594
- }];
595
- var mockFile = new File(['foo'], 'foo.txt', {
596
- type: 'text/plain'
597
- });
598
- var props = {
599
- uploadAction: 'https://www.mocky.io/v2/5dc3b4413000007600347501',
600
- fileList: fileList,
601
- localeDatas: localeDatas,
602
- beforeUpload: function beforeUpload() {
603
- return false;
604
- },
605
- onChange: function onChange() {}
606
- };
607
- var wrapper = (0, _enzyme.mount)( /*#__PURE__*/_react["default"].createElement(_main["default"], props));
608
- var spyFunc = jest.spyOn(wrapper.instance().uploadRef.current, 'uploadFile');
609
- wrapper.find('input').simulate('change', {
610
- target: {
611
- files: [mockFile]
612
- }
613
- });
614
- expect(spyFunc).not.toHaveBeenCalled();
615
- wrapper.setProps({
616
- beforeUpload: function beforeUpload() {
617
- return true;
618
- }
619
- });
620
- wrapper.find('input').simulate('change', {
621
- target: {
622
- files: [mockFile]
623
- }
624
- });
625
- expect(spyFunc).toHaveBeenCalled();
626
- spyFunc.mockRestore();
627
- wrapper.unmount();
628
- });
629
- it('should stop upload when file size is bigger than maxSize', function () {
630
- var fileList = [{
631
- name: 'a.png',
632
- fileType: 'img',
633
- uploadState: 'success',
634
- url: 'https://i8.mifile.cn/a1/pms_1531116957.78852376.jpg'
635
- }];
636
- var mockFile = new File(['foo'], 'foo.txt', {
637
- type: 'text/plain'
638
- });
639
- var props = {
640
- uploadAction: 'https://www.mocky.io/v2/5dc3b4413000007600347501',
641
- fileList: fileList,
642
- localeDatas: localeDatas,
643
- maxSize: 0.001,
644
- onChange: function onChange() {}
645
- };
646
- var wrapper = (0, _enzyme.mount)( /*#__PURE__*/_react["default"].createElement(_main["default"], props));
647
- var spyFunc = jest.spyOn(wrapper.instance().uploadRef.current, 'uploadFile');
648
- wrapper.find('input').simulate('change', {
649
- target: {
650
- files: [mockFile]
651
- }
652
- });
653
- expect(spyFunc).not.toHaveBeenCalled();
654
- wrapper.setProps({
655
- maxSize: 1
656
- });
657
- wrapper.find('input').simulate('change', {
658
- target: {
659
- files: [mockFile]
660
- }
661
- });
662
- expect(spyFunc).toHaveBeenCalled();
663
- spyFunc.mockRestore();
664
- wrapper.unmount();
665
- });
666
- it('should not invoke onChange when customUpload exist', function () {
667
- var fileList = [{
668
- name: 'a.png',
669
- fileType: 'img',
670
- uploadState: 'success',
671
- url: 'https://i8.mifile.cn/a1/pms_1531116957.78852376.jpg'
672
- }];
673
- var mockFile = new File(['foo'], 'foo.txt', {
674
- type: 'text/plain'
675
- });
676
- var props = {
677
- uploadAction: 'https://www.mocky.io/v2/5dc3b4413000007600347501',
678
- fileList: fileList,
679
- localeDatas: localeDatas,
680
- maxSize: 0.001,
681
- customUpload: jest.fn(),
682
- onChange: jest.fn()
683
- };
684
- var wrapper = (0, _enzyme.mount)( /*#__PURE__*/_react["default"].createElement(_main["default"], props));
685
- wrapper.find('input').simulate('change', {
686
- target: {
687
- files: [mockFile]
688
- }
689
- });
690
- expect(wrapper.prop('customUpload')).toHaveBeenCalled();
691
- expect(wrapper.prop('onChange')).not.toHaveBeenCalled();
692
- wrapper.unmount();
693
- });
694
- it('can remove', function () {
695
- types.forEach(function (type, index) {
696
- var wrapper = (0, _enzyme.mount)( /*#__PURE__*/_react["default"].createElement(_main["default"], {
697
- localeDatas: localeDatas,
698
- type: type,
699
- fileList: [{
700
- name: 'a.png',
701
- fileType: 'img',
702
- uploadState: 'success',
703
- url: 'https://i8.mifile.cn/a1/pms_1531116957.78852376.jpg'
704
- }],
705
- uploadAction: "https://www.mocky.io/v2/5dc3b4413000007600347501"
706
- }));
707
-
708
- if (['photo', 'avatar'].includes(type)) {
709
- wrapper.find('.hi-upload').find('ul.hi-upload__list').not('.hi-upload__item--upload').simulate('mouseover');
710
- wrapper.find('.hi-upload').find('ul.hi-upload__list').not('.hi-upload__item--upload').find('Icon.hi-upload__photo-del').simulate('click');
711
- expect(wrapper.find('.hi-upload').find('ul.hi-upload__list').find('li.hi-upload__item')).toHaveLength(1);
712
- } else if (type === 'drag') {
713
- wrapper.find('.hi-upload').find('span.hi-upload__operate-icon').simulate('click');
714
- expect(wrapper.find('.hi-upload').find('ul.hi-upload__list').find('li.hi-upload__item')).toHaveLength(0);
715
- } else {
716
- wrapper.find('.hi-upload').find('.icon-delete').simulate('click');
717
- expect(wrapper.find('.hi-upload').find('ul.hi-upload__list').find('li.hi-upload__item')).toHaveLength(0);
718
- }
719
-
720
- wrapper.unmount();
721
- });
722
- });
723
- it('can not remove file when onRemove return false', function () {
724
- types.forEach(function (type, index) {
725
- var wrapper = (0, _enzyme.mount)( /*#__PURE__*/_react["default"].createElement(_main["default"], {
726
- localeDatas: localeDatas,
727
- type: type,
728
- fileList: [{
729
- name: 'a.png',
730
- fileType: 'img',
731
- uploadState: 'success',
732
- url: 'https://i8.mifile.cn/a1/pms_1531116957.78852376.jpg'
733
- }],
734
- onRemove: function onRemove() {
735
- return false;
736
- },
737
- uploadAction: "https://www.mocky.io/v2/5dc3b4413000007600347501"
738
- }));
739
-
740
- if (['photo', 'avatar'].includes(type)) {
741
- wrapper.find('.hi-upload').find('ul.hi-upload__list').not('.hi-upload__item--upload').simulate('mouseover');
742
- wrapper.find('.hi-upload').find('ul.hi-upload__list').not('.hi-upload__item--upload').find('Icon.hi-upload__photo-del').simulate('click');
743
-
744
- if (type === 'photo') {
745
- expect(wrapper.find('.hi-upload').find('ul.hi-upload__list').find('li.hi-upload__item')).toHaveLength(2);
746
- } else {
747
- expect(wrapper.find('.hi-upload').find('ul.hi-upload__list').find('li.hi-upload__item')).toHaveLength(1);
748
- }
749
- } else if (type === 'drag') {
750
- wrapper.find('.hi-upload').find('span.hi-upload__operate-icon').simulate('click');
751
- expect(wrapper.find('.hi-upload').find('ul.hi-upload__list').find('li.hi-upload__item')).toHaveLength(2);
752
- } else {
753
- wrapper.find('.hi-upload').find('.icon-delete').simulate('click');
754
- expect(wrapper.find('.hi-upload').find('ul.hi-upload__list').find('li.hi-upload__item')).toHaveLength(1);
755
- }
756
-
757
- wrapper.unmount();
758
- });
759
- });
760
- });