@hi-ui/hiui 2.15.11 → 2.15.12

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 (344) hide show
  1. package/es/_util/SwitchVersion.js +40 -0
  2. package/es/_util/depreactedPropsCompat.js +58 -0
  3. package/es/_util/index.js +31 -0
  4. package/es/_util/warning.js +2 -2
  5. package/es/alert/Alert.js +126 -0
  6. package/es/alert/__tests__/index.test.js +84 -0
  7. package/es/alert/index.js +6 -147
  8. package/es/alert/style/index.css +1 -1
  9. package/es/badge/Badge.js +82 -0
  10. package/es/badge/__tests__/index.test.js +82 -0
  11. package/es/badge/index.js +9 -87
  12. package/es/badge/style/index.css +1 -1
  13. package/es/badge/style/index.js +0 -0
  14. package/es/breadcrumb/__tests__/index.test.js +61 -0
  15. package/es/breadcrumb/index.js +85 -0
  16. package/es/breadcrumb/style/index.css +1 -0
  17. package/es/button/Button.js +62 -60
  18. package/es/button/ButtonGroup.js +24 -40
  19. package/es/button/IconLoading.js +6 -6
  20. package/es/button/__tests__/index.test.js +221 -0
  21. package/es/button/index.js +3 -2
  22. package/es/button/style/index.css +1 -1
  23. package/es/card/__tests__/index.test.js +179 -0
  24. package/es/card/index.js +61 -57
  25. package/es/card/style/index.css +1 -1
  26. package/es/carousel/__tests__/index.test.js +104 -0
  27. package/es/carousel/index.js +219 -0
  28. package/es/carousel/style/index.css +1 -0
  29. package/es/carousel/style/index.js +3 -0
  30. package/es/cascader/Cascader.js +190 -133
  31. package/es/cascader/Menu.js +168 -0
  32. package/es/cascader/__tests__/index.test.js +392 -0
  33. package/es/cascader/index.js +5 -2
  34. package/es/cascader/style/cascader.css +1 -1
  35. package/es/cascader/style/menu.css +1 -1
  36. package/es/checkbox/Checkbox.js +136 -0
  37. package/es/checkbox/Group.js +194 -0
  38. package/es/checkbox/__tests__/index.test.js +226 -0
  39. package/es/checkbox/checkbox-legacy/Base.js +212 -0
  40. package/es/checkbox/checkbox-legacy/CheckBox.js +157 -0
  41. package/es/checkbox/checkbox-legacy/index.js +15 -0
  42. package/es/checkbox/checkbox-legacy/style/index.css +1 -0
  43. package/es/checkbox/checkbox-legacy/style/index.js +3 -0
  44. package/es/checkbox/index.js +13 -4
  45. package/es/checkbox/style/index.css +1 -1
  46. package/es/collapse/__tests__/index.test.js +111 -0
  47. package/es/collapse/index.js +88 -110
  48. package/es/collapse/style/index.css +1 -1
  49. package/es/confirm/index.js +39 -60
  50. package/es/context/index.js +45 -51
  51. package/es/counter/Counter.js +339 -0
  52. package/es/counter/__tests__/index.test.js +134 -0
  53. package/es/counter/counter-legacy/index.js +267 -0
  54. package/es/counter/index.js +6 -270
  55. package/es/counter/style/index.css +1 -1
  56. package/es/date-picker/BasePicker.js +380 -302
  57. package/es/date-picker/Calender.js +326 -98
  58. package/es/date-picker/DatePanel.js +194 -213
  59. package/es/date-picker/DatePicker.js +143 -47
  60. package/es/date-picker/DateRangePanel.js +272 -208
  61. package/es/date-picker/Modal.js +18 -32
  62. package/es/date-picker/Time.js +231 -345
  63. package/es/date-picker/TimeList.js +246 -0
  64. package/es/date-picker/TimePanel.js +28 -41
  65. package/es/date-picker/TimePeriodPanel.js +27 -46
  66. package/es/date-picker/TimePicker.js +44 -46
  67. package/es/date-picker/TimeRangePanel.js +33 -51
  68. package/es/date-picker/Type.js +5 -1
  69. package/es/date-picker/WeekRangePanel.js +254 -175
  70. package/es/date-picker/YMRangePanel.js +364 -0
  71. package/es/date-picker/__tests__/index.test.js +956 -0
  72. package/es/date-picker/constants.js +14 -28
  73. package/es/date-picker/dateUtil.js +221 -52
  74. package/es/date-picker/datepicker-legacy/BasePicker.js +511 -0
  75. package/es/date-picker/datepicker-legacy/Calender.js +422 -0
  76. package/es/date-picker/datepicker-legacy/DatePanel.js +455 -0
  77. package/es/date-picker/datepicker-legacy/DatePicker.js +103 -0
  78. package/es/date-picker/datepicker-legacy/DateRangePanel.js +488 -0
  79. package/es/date-picker/datepicker-legacy/Modal.js +67 -0
  80. package/es/date-picker/datepicker-legacy/Time.js +405 -0
  81. package/es/date-picker/datepicker-legacy/TimePanel.js +85 -0
  82. package/es/date-picker/datepicker-legacy/TimePeriodPanel.js +118 -0
  83. package/es/date-picker/datepicker-legacy/TimePicker.js +78 -0
  84. package/es/date-picker/datepicker-legacy/TimeRangePanel.js +90 -0
  85. package/es/date-picker/datepicker-legacy/Type.js +31 -0
  86. package/es/date-picker/datepicker-legacy/WeekRangePanel.js +337 -0
  87. package/es/date-picker/datepicker-legacy/constants.js +79 -0
  88. package/es/date-picker/datepicker-legacy/dateUtil.js +258 -0
  89. package/es/date-picker/datepicker-legacy/index.js +15 -0
  90. package/es/date-picker/datepicker-legacy/local.js +11 -0
  91. package/es/date-picker/datepicker-legacy/style/index.css +1 -0
  92. package/es/date-picker/datepicker-legacy/style/index.js +3 -0
  93. package/es/date-picker/datepicker-legacy/style/timepicker.css +1 -0
  94. package/es/date-picker/datepicker-legacy/util.js +60 -0
  95. package/es/date-picker/index.js +5 -2
  96. package/es/date-picker/style/index.css +1 -1
  97. package/es/date-picker/toLunar.js +172 -0
  98. package/es/date-picker/util.js +101 -8
  99. package/es/dropdown/Dropdown.js +191 -203
  100. package/es/dropdown/DropdownButton.js +102 -0
  101. package/es/dropdown/DropdownMenu.js +107 -0
  102. package/es/dropdown/DropdownMenuItem.js +172 -0
  103. package/es/dropdown/__tests__/index.test.js +313 -0
  104. package/es/dropdown/index.js +69 -4
  105. package/es/dropdown/style/index.css +1 -1
  106. package/es/dropdown/style/index.js +0 -2
  107. package/es/dropdown/{__test__ → tests}/index.test.js +7 -7
  108. package/es/dropdown/utils.js +35 -0
  109. package/es/ficon/index.js +16 -30
  110. package/es/form/Form.js +176 -0
  111. package/es/form/{item.js → Item.js} +52 -60
  112. package/es/form/__tests__/index.test.js +571 -0
  113. package/es/form/index.js +6 -171
  114. package/es/form/style/index.css +1 -1
  115. package/es/grid/__tests__/index.test.js +100 -0
  116. package/es/grid/index.js +36 -56
  117. package/es/icon/index.js +23 -38
  118. package/es/index.js +61 -9
  119. package/es/input/Input.js +400 -0
  120. package/es/input/__tests__/index.test.js +376 -0
  121. package/es/input/index.js +26 -347
  122. package/es/input/input-legacy/index.js +341 -0
  123. package/es/input/input-legacy/util.js +176 -0
  124. package/es/input/style/index.css +1 -1
  125. package/es/input/util.js +26 -18
  126. package/es/lib/withDragDropContext.js +2 -2
  127. package/es/loading/Loading.js +173 -0
  128. package/es/loading/__tests__/index.test.js +110 -0
  129. package/es/loading/index.js +5 -129
  130. package/es/loading/style/index.css +0 -0
  131. package/es/loading/style/index.js +0 -0
  132. package/es/locales/en-US.js +45 -9
  133. package/es/locales/index.js +16 -2
  134. package/es/locales/zh-CN.js +46 -10
  135. package/es/locales/zh-Hant-HK.js +123 -0
  136. package/es/locales/zh-Hant-TW.js +125 -0
  137. package/es/menu/Item.js +34 -51
  138. package/es/menu/Menu.js +414 -0
  139. package/es/menu/SubMenu.js +63 -90
  140. package/es/menu/Title.js +37 -51
  141. package/es/menu/__tests__/index.test.js +274 -0
  142. package/es/menu/index.js +12 -419
  143. package/es/menu/style/index.css +1 -1
  144. package/es/message/__tests__/index.test.js +71 -0
  145. package/es/message/index.js +58 -0
  146. package/es/message/style/index.css +1 -0
  147. package/es/message/style/index.js +5 -0
  148. package/es/modal/__tests__/index.test.js +178 -0
  149. package/es/modal/index.js +85 -77
  150. package/es/modal/style/index.css +1 -1
  151. package/es/nav-menu/NavMenu.js +44 -61
  152. package/es/nav-menu/__test__/index.test.js +8 -8
  153. package/es/nav-menu/__tests__/index.test.js +23 -0
  154. package/es/nav-menu/index.js +2 -2
  155. package/es/notice/Notice.js +136 -0
  156. package/es/notice/NoticeContainer.js +107 -0
  157. package/es/notice/__tests__/index.test.js +174 -0
  158. package/es/notice/index.js +66 -0
  159. package/es/notice/style/index.css +1 -0
  160. package/es/notice/style/index.js +5 -0
  161. package/es/notification/HandleNotification/index.js +216 -0
  162. package/es/notification/HandleNotification/style/index.css +1 -0
  163. package/es/notification/HandleNotification/style/index.js +5 -0
  164. package/es/notification/__tests__/index.test.js +114 -0
  165. package/es/notification/index.js +68 -231
  166. package/es/notification/style/index.css +1 -1
  167. package/es/notification/style/index.js +0 -0
  168. package/es/pagination/Pager.js +7 -9
  169. package/es/pagination/Pagination.js +134 -133
  170. package/es/pagination/__tests__/index.test.js +244 -0
  171. package/es/pagination/index.js +9 -8
  172. package/es/pagination/style/index.css +1 -1
  173. package/es/panel/index.js +28 -46
  174. package/es/popover/__test__/index.test.js +10 -10
  175. package/es/popover/__tests__/index.test.js +152 -0
  176. package/es/popover/index.js +77 -83
  177. package/es/popper/index.js +68 -64
  178. package/es/popper/style/index.css +1 -1
  179. package/es/preview/index.js +529 -0
  180. package/es/preview/style/index.css +1 -0
  181. package/es/preview/style/index.js +3 -0
  182. package/es/progress/BarProgress.js +107 -43
  183. package/es/progress/CircleProgress.js +13 -14
  184. package/es/progress/DashboardProgress.js +11 -13
  185. package/es/progress/Progress.js +102 -0
  186. package/es/progress/__tests__/index.test.js +131 -0
  187. package/es/progress/index.js +8 -100
  188. package/es/progress/style/index.css +1 -1
  189. package/es/radio/Group.js +199 -0
  190. package/es/radio/Radio.js +147 -0
  191. package/es/radio/__tests__/index.test.js +127 -0
  192. package/es/radio/index.js +10 -216
  193. package/es/radio/{__test__ → radio-legacy/__test__}/index.test.js +13 -13
  194. package/es/radio/radio-legacy/index.js +214 -0
  195. package/es/radio/radio-legacy/style/index.css +1 -0
  196. package/es/radio/radio-legacy/style/index.js +3 -0
  197. package/es/radio/style/index.css +1 -1
  198. package/es/rate/Icons.js +70 -70
  199. package/es/rate/Rate.js +75 -108
  200. package/es/rate/__tests__/index.test.js +124 -0
  201. package/es/rate/index.js +5 -2
  202. package/es/rate/style/index.css +1 -1
  203. package/es/select/Select.js +330 -265
  204. package/es/select/SelectDropdown.js +223 -79
  205. package/es/select/SelectInput.js +120 -91
  206. package/es/select/__tests__/index.test.js +505 -0
  207. package/es/select/index.js +6 -4
  208. package/es/select/select-legacy/Option.js +78 -0
  209. package/es/select/select-legacy/Select.js +702 -0
  210. package/es/select/select-legacy/SelectDropdown.js +157 -0
  211. package/es/select/select-legacy/SelectInput.js +308 -0
  212. package/es/select/select-legacy/common.js +19 -0
  213. package/es/select/select-legacy/index.js +16 -0
  214. package/es/select/style/select-dropdown.css +1 -1
  215. package/es/select/style/select-input.css +1 -1
  216. package/es/stepper/Stepper.js +147 -0
  217. package/es/stepper/__tests__/index.test.js +161 -0
  218. package/es/stepper/index.js +21 -127
  219. package/es/stepper/style/index.css +1 -1
  220. package/es/style/icon/diyIcon.css +1 -1
  221. package/es/style/icon/index.css +1 -1
  222. package/es/switch/__tests__/index.test.js +68 -0
  223. package/es/switch/index.js +26 -46
  224. package/es/switch/style/index.css +1 -1
  225. package/es/table/Body.js +294 -0
  226. package/es/table/ClickOuterside.js +95 -0
  227. package/es/table/Footer.js +171 -0
  228. package/es/table/Header.js +320 -0
  229. package/es/table/TableContent.js +101 -0
  230. package/es/table/__tests__/index.test.js +129 -0
  231. package/es/table/checkbox/index.js +36 -47
  232. package/es/table/checkbox/style/index.css +1 -0
  233. package/es/table/checkbox/style/index.js +3 -0
  234. package/es/table/index.js +269 -314
  235. package/es/table/menu/index.js +34 -44
  236. package/es/table/prefix.js +2 -2
  237. package/es/table/style/Table.css +1 -1
  238. package/es/table/style/index.css +1 -1
  239. package/es/tabs/ItemDropdown.js +45 -65
  240. package/es/tabs/TabPane.js +26 -44
  241. package/es/tabs/Tabs.js +110 -111
  242. package/es/tabs/__tests__/index.test.js +329 -0
  243. package/es/tabs/index.js +9 -3
  244. package/es/tabs/style/index.css +1 -1
  245. package/es/tabs/tabs-legacy/ItemDropdown.js +162 -0
  246. package/es/tabs/tabs-legacy/TabPane.js +70 -0
  247. package/es/tabs/tabs-legacy/Tabs.js +291 -0
  248. package/es/tabs/tabs-legacy/index.js +18 -0
  249. package/es/tabs/tabs-legacy/style/index.css +1 -0
  250. package/es/tabs/tabs-legacy/style/index.js +3 -0
  251. package/es/tag/__tests__/index.test.js +46 -0
  252. package/es/tag/index.js +86 -0
  253. package/es/tag/style/index.css +1 -0
  254. package/es/tag/style/index.js +3 -0
  255. package/es/timeline/__tests__/index.test.js +198 -0
  256. package/es/timeline/index.js +206 -136
  257. package/es/timeline/style/index.css +1 -1
  258. package/es/tooltip/__tests__/index.test.js +166 -0
  259. package/es/tooltip/index.js +93 -52
  260. package/es/tooltip/style/index.css +1 -1
  261. package/es/transfer/Item.js +73 -71
  262. package/es/transfer/Transfer.js +558 -0
  263. package/es/transfer/__tests__/index.test.js +210 -0
  264. package/es/transfer/index.js +4 -443
  265. package/es/transfer/style/index.css +1 -1
  266. package/es/tree/IconLoading.js +38 -0
  267. package/es/tree/Tree.js +94 -111
  268. package/es/tree/TreeDivider.js +6 -6
  269. package/es/tree/TreeItem.js +217 -123
  270. package/es/tree/TreeNode.js +472 -333
  271. package/es/tree/__tests__/index.test.js +599 -0
  272. package/es/tree/index.js +9 -2
  273. package/es/tree/style/index.css +1 -1
  274. package/es/tree/tree-legacy/Tree.js +330 -0
  275. package/es/tree/tree-legacy/TreeDivider.js +25 -0
  276. package/es/tree/tree-legacy/TreeItem.js +326 -0
  277. package/es/tree/tree-legacy/TreeNode.js +711 -0
  278. package/es/tree/tree-legacy/index.js +13 -0
  279. package/es/tree/tree-legacy/style/index.css +1 -0
  280. package/es/tree/tree-legacy/style/index.js +3 -0
  281. package/es/tree/tree-legacy/util.js +434 -0
  282. package/es/tree/util.js +8 -256
  283. package/es/upload/Upload.js +292 -200
  284. package/es/upload/UploadAvatar.js +61 -79
  285. package/es/upload/UploadClick.js +62 -60
  286. package/es/upload/UploadDrag.js +63 -66
  287. package/es/upload/UploadPhoto.js +86 -75
  288. package/es/upload/UploadPictureCard.js +53 -60
  289. package/es/upload/__tests__/index.test.js +760 -0
  290. package/es/upload/index.js +8 -71
  291. package/es/upload/main.js +83 -0
  292. package/es/upload/style/index.css +1 -1
  293. package/es/upload/tool.js +0 -1
  294. package/es/upload/{Preview.js → upload-legacy/Preview.js} +48 -62
  295. package/es/upload/upload-legacy/Upload.js +431 -0
  296. package/es/upload/upload-legacy/UploadAvatar.js +318 -0
  297. package/es/upload/upload-legacy/UploadClick.js +121 -0
  298. package/es/upload/upload-legacy/UploadDrag.js +176 -0
  299. package/es/upload/upload-legacy/UploadPhoto.js +179 -0
  300. package/es/upload/upload-legacy/UploadPictureCard.js +122 -0
  301. package/es/upload/upload-legacy/index.js +67 -0
  302. package/es/upload/upload-legacy/style/index.css +1 -0
  303. package/es/upload/upload-legacy/style/index.js +5 -0
  304. package/es/upload/upload-legacy/tool.js +84 -0
  305. package/es/watermark/index.js +97 -0
  306. package/es/watermark/watermark.js +263 -0
  307. package/package.json +1 -1
  308. package/es/alert/__test__/index.test.js +0 -67
  309. package/es/button/__test__/index.test.js +0 -29
  310. package/es/cascader/__test__/index.test.js +0 -283
  311. package/es/cascader/menu.js +0 -155
  312. package/es/checkbox/Base.js +0 -205
  313. package/es/checkbox/CheckBox.js +0 -185
  314. package/es/collapse/__test__/index.test.js +0 -58
  315. package/es/counter/__test__/index.test.js +0 -52
  316. package/es/menu/ItemGroup.js +0 -81
  317. package/es/modal/__test__/index.test.js +0 -123
  318. package/es/notification/__test__/index.test.js +0 -56
  319. package/es/pagination/__test__/index.test.js +0 -140
  320. package/es/rate/__test__/index.test.js +0 -54
  321. package/es/select/Option.js +0 -93
  322. package/es/select/__test__/index.test.js +0 -429
  323. package/es/style/color/colors.css +0 -0
  324. package/es/style/index.css +0 -0
  325. package/es/style/mixins/colors.css +0 -0
  326. package/es/style/mixins/index.css +0 -0
  327. package/es/style/theme/dark.css +0 -0
  328. package/es/style/theme/default.css +0 -0
  329. package/es/switch/__test__/index.test.js +0 -39
  330. package/es/table/__test__/index.test.js +0 -73
  331. package/es/table/body.js +0 -318
  332. package/es/table/clickOuterside.js +0 -115
  333. package/es/table/footer.js +0 -196
  334. package/es/table/header.js +0 -337
  335. package/es/table/pover.js +0 -154
  336. package/es/table/tableContent.js +0 -120
  337. package/es/timeline/__test__/index.test.js +0 -49
  338. package/es/timeline/foldingItem.js +0 -82
  339. package/es/tooltip/__test__/index.test.js +0 -67
  340. package/es/transfer/__test__/index.test.js +0 -11
  341. /package/es/{style → breadcrumb/style}/index.js +0 -0
  342. /package/es/checkbox/{common.js → checkbox-legacy/common.js} +0 -0
  343. /package/es/upload/{style → upload-legacy/style}/preview.css +0 -0
  344. /package/es/upload/{style → upload-legacy/style}/preview.js +0 -0
@@ -0,0 +1,956 @@
1
+ "use strict";
2
+
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
4
+
5
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
6
+
7
+ var _react = _interopRequireDefault(require("react"));
8
+
9
+ var _enzyme = require("enzyme");
10
+
11
+ var _index = _interopRequireDefault(require("../index"));
12
+
13
+ var _TimePicker = _interopRequireDefault(require("../TimePicker"));
14
+
15
+ var _DatePicker = require("../DatePicker");
16
+
17
+ var _dateUtil = require("../dateUtil");
18
+
19
+ var _util = _interopRequireWildcard(require("../util"));
20
+
21
+ var _constants = require("../constants");
22
+
23
+ var _sinon = _interopRequireWildcard(require("sinon"));
24
+
25
+ var mockDate = new Date('2019-11-20 12:00:00');
26
+ var mockMinDate = (0, _dateUtil.subDays)(mockDate, 3);
27
+ var mockMaxDate = (0, _dateUtil.addDays)(mockDate, 3);
28
+ var mockCurrentDay = (0, _dateUtil.getDate)(mockDate);
29
+ var mockCurrentYear = (0, _dateUtil.getYear)(mockDate);
30
+ var mockCurrentMonth = (0, _dateUtil.getMonth)(mockDate) + 1; // 1~12
31
+
32
+ var realCurrentDay = (0, _dateUtil.getDate)(new Date());
33
+ describe('Datepicker', function () {
34
+ describe('PropTypes', function () {
35
+ it('type', function () {
36
+ var types = ['date', 'daterange', 'month', 'year', 'week', 'weekrange', 'timeperiod'];
37
+ var wrapper = (0, _enzyme.mount)(_react["default"].createElement("div", null, types.map(function (type, index) {
38
+ return _react["default"].createElement(_index["default"], {
39
+ type: type,
40
+ key: index
41
+ });
42
+ })));
43
+ types.map(function (type, index) {
44
+ // var expectLen = type.includes('range') ? 2 : 1
45
+ // wrapper.find('.hi-datepicker__input').at(index).childAt(0).simulate('focus')
46
+ expect(wrapper.find(".hi-datepicker__input--".concat(type))).toHaveLength(1); // expect(document.querySelectorAll('.hi-datepicker')).toHaveLength(1)
47
+ // expect(document.querySelectorAll(`.hi-datepicker__calender-container--${type}`)).toHaveLength(expectLen)
48
+ // document.body.click()
49
+ });
50
+ });
51
+ it('date', function () {
52
+ var callback = jest.fn();
53
+ var wrapper = (0, _enzyme.mount)(_react["default"].createElement(_index["default"], {
54
+ type: "date",
55
+ onChange: callback
56
+ }));
57
+ expect(wrapper.find('input').getDOMNode().getAttribute('value')).toEqual('');
58
+ expect(wrapper.find('input').getDOMNode().getAttribute('placeholder')).toEqual('请选择日期');
59
+ wrapper.find('input').simulate('focus');
60
+ expect(wrapper.find('td.current').find('span').text()).toEqual(realCurrentDay.toString()); // string
61
+
62
+ wrapper.setProps({
63
+ value: '2019-11-20'
64
+ });
65
+ expect(wrapper.find('td.current').find('span').text()).toEqual('20'); // number
66
+
67
+ wrapper.setProps({
68
+ value: mockDate.getTime()
69
+ });
70
+ expect(wrapper.find('td.current').find('span').text()).toEqual(mockCurrentDay.toString());
71
+ wrapper.setProps({
72
+ value: undefined
73
+ });
74
+ expect(wrapper.find('td.current').find('span').text()).toEqual(realCurrentDay.toString());
75
+ wrapper.setProps({
76
+ value: null
77
+ });
78
+ expect(wrapper.find('td.current').find('span').text()).toEqual(realCurrentDay.toString());
79
+ wrapper.setProps({
80
+ value: mockDate
81
+ });
82
+ expect(wrapper.find('td.current').find('span').text()).toEqual(mockCurrentDay.toString());
83
+ wrapper.find(".hi-datepicker__panel--left td[value=".concat(15, "]:not(.prev):not(.next)")).simulate('click');
84
+ expect(callback).toHaveBeenCalled();
85
+ wrapper.find('input').simulate('focus'); // 月份减少
86
+
87
+ wrapper.find('.hi-datepicker__header-btns').at(0).childAt(1).simulate('click');
88
+ expect(wrapper.find('.hi-datepicker__header-text').text()).toEqual(expect.stringContaining('10月')); // 月份增加
89
+
90
+ wrapper.find('.hi-datepicker__header-btns').at(1).childAt(0).simulate('click');
91
+ expect(wrapper.find('.hi-datepicker__header-text').text()).toEqual(expect.stringContaining('11月')); // 年份份减少
92
+
93
+ wrapper.find('.hi-datepicker__header-btns').at(0).childAt(0).simulate('click');
94
+ expect(wrapper.find('.hi-datepicker__header-text').text()).toEqual(expect.stringContaining('2018年')); // 年份增加
95
+
96
+ wrapper.find('.hi-datepicker__header-btns').at(1).childAt(1).simulate('click');
97
+ expect(wrapper.find('.hi-datepicker__header-text').text()).toEqual(expect.stringContaining('2019年')); // 日期面板中点击header 事件
98
+
99
+ wrapper.find('.hi-datepicker__header-text').simulate('click');
100
+ expect(wrapper.find('.hi-datepicker__calender-container--year')).toHaveLength(1);
101
+ expect(wrapper.find(".hi-datepicker__panel--left td[value=".concat(2019, "]:not(.prev):not(.next)")).hasClass('current')).toBeTruthy();
102
+ wrapper.find(".hi-datepicker__panel--left td[value=".concat(2018, "]:not(.prev):not(.next)")).simulate('click');
103
+ expect(wrapper.find(".hi-datepicker__panel--left td[value=".concat(11, "]:not(.prev):not(.next)")).hasClass('current')).toBeTruthy();
104
+ wrapper.find(".hi-datepicker__panel--left td[value=".concat(11, "]:not(.prev):not(.next)")).simulate('click');
105
+ expect(wrapper.find(".hi-datepicker__panel--left td[value=".concat(15, "]:not(.prev):not(.next)")).hasClass('current')).toBeTruthy(); // 英文 header
106
+
107
+ wrapper.setProps({
108
+ showPanel: false,
109
+ locale: 'en-US'
110
+ });
111
+ wrapper.find('input').at(0).simulate('focus');
112
+ expect(wrapper.find('.hi-datepicker__panel--left').find('.hi-datepicker__header-text').text()).toEqual(expect.not.stringContaining('年'));
113
+ });
114
+ it('altCalendarPreset', function () {
115
+ var mockTime = new Date('2020-01-14');
116
+ var wrapper = (0, _enzyme.mount)(_react["default"].createElement(_index["default"], {
117
+ value: mockTime,
118
+ altCalendarPreset: "zh-CN"
119
+ }));
120
+ setTimeout(function () {
121
+ wrapper.find('input').simulate('focus');
122
+ expect(wrapper.find('.hi-datepicker__cell--large')).toHaveLength(42);
123
+ expect(wrapper.find('.hi-datepicker__text--showLunar[value=14]').text()).toEqual('二十');
124
+ }, 500);
125
+ });
126
+ it('altCalendar', function () {
127
+ var mockTime = new Date('2020-01-14');
128
+ var wrapper = (0, _enzyme.mount)(_react["default"].createElement(_index["default"], {
129
+ value: mockTime,
130
+ altCalendar: [{
131
+ date: '2020/1/14',
132
+ text: '测试日'
133
+ }]
134
+ }));
135
+ wrapper.find('input').simulate('focus');
136
+ expect(wrapper.find('.hi-datepicker__text--showLunar[value=14]').text()).toEqual('测试日');
137
+ });
138
+ it('dateMarkPreset', function () {
139
+ var mockTime = new Date('2020-10-01');
140
+ var wrapper = (0, _enzyme.mount)(_react["default"].createElement(_index["default"], {
141
+ value: mockTime,
142
+ dateMarkPreset: "zh-CN"
143
+ }));
144
+ setTimeout(function () {
145
+ wrapper.find('input').simulate('focus');
146
+ expect(wrapper.find('.current').find('span').last().text()).toEqual('休');
147
+ }, 500);
148
+ });
149
+ it('dateMarkRender', function () {
150
+ var mockTime = new Date('2020-1-14');
151
+ var wrapper = (0, _enzyme.mount)(_react["default"].createElement(_index["default"], {
152
+ value: mockTime,
153
+ dateMarkPreset: "zh-CN",
154
+ dateMarkRender: function dateMarkRender(currentDate) {
155
+ var date = _index["default"].format(currentDate, 'yyyy/M/D');
156
+
157
+ if (date == '2020/1/14') {
158
+ return _react["default"].createElement("span", {
159
+ style: {
160
+ color: '#fa0'
161
+ }
162
+ }, "\u73ED");
163
+ } else {
164
+ return null;
165
+ }
166
+ }
167
+ }));
168
+ wrapper.find('input').simulate('focus');
169
+ expect(wrapper.find('.current').find('span').last().text()).toEqual('班');
170
+ });
171
+ it('week', function () {
172
+ var callback = jest.fn();
173
+ var wrapper = (0, _enzyme.mount)(_react["default"].createElement(_index["default"], {
174
+ type: "week",
175
+ onChange: callback
176
+ }));
177
+ expect(wrapper.find('input').getDOMNode().getAttribute('value')).toEqual(''); // expect(wrapper.find('input').getDOMNode().getAttribute('placeholder')).toEqual('请选择日期')
178
+
179
+ wrapper.find('input').simulate('focus');
180
+ expect(wrapper.find("td[value=".concat(realCurrentDay, "]:not(.prev):not(.next)")).hasClass('in-range')).toBeTruthy();
181
+ expect(wrapper.find('.hi-datepicker__row--current-week').childAt(0).hasClass('range-se')).toBeTruthy();
182
+ expect(wrapper.find('.hi-datepicker__row--current-week').childAt(6).hasClass('range-se')).toBeTruthy(); // TODO: week 时 传入字符串不能被正确解析
183
+
184
+ var prevWeekDate = (0, _dateUtil.subDays)(mockDate, 7);
185
+ wrapper.setProps({
186
+ value: prevWeekDate
187
+ });
188
+ expect(wrapper.find("td[value=".concat((0, _dateUtil.getDate)(prevWeekDate), "]")).hasClass('in-range')).toBeTruthy(); // 点击
189
+
190
+ wrapper.find('.hi-datepicker__calender').simulate('click', {
191
+ target: wrapper.find("td[value=".concat((0, _dateUtil.getDate)(mockDate), "]")).getDOMNode()
192
+ });
193
+ expect(callback).toHaveBeenCalled();
194
+ wrapper.find('input').simulate('focus');
195
+ expect(wrapper.find("td[value=".concat((0, _dateUtil.getDate)(mockDate), "]")).hasClass('in-range')).toBeTruthy();
196
+ });
197
+ it('year', function () {
198
+ var callback = jest.fn();
199
+ var wrapper = (0, _enzyme.mount)(_react["default"].createElement(_index["default"], {
200
+ type: "year",
201
+ onChange: callback,
202
+ value: mockDate
203
+ }));
204
+ expect(wrapper.find('input').getDOMNode().getAttribute('value')).toEqual('2019');
205
+ expect(wrapper.find('input').getDOMNode().getAttribute('placeholder')).toEqual('请选择年');
206
+ wrapper.find('input').simulate('focus');
207
+ expect(wrapper.find("td[value=".concat(mockCurrentYear, "]")).hasClass('current')).toBeTruthy();
208
+ wrapper.setProps({
209
+ value: mockCurrentYear - 1 + ''
210
+ });
211
+ expect(wrapper.find("td[value=".concat(mockCurrentYear - 1 + '', "]")).hasClass('current')).toBeTruthy();
212
+ wrapper.find('.hi-datepicker__calender').simulate('click', {
213
+ target: wrapper.find("td[value=".concat(mockCurrentYear, "]")).getDOMNode()
214
+ });
215
+ expect(callback).toHaveBeenCalled(); // expect(callback).toHaveBeenCalledWith(new Date(), mockCurrentYear)
216
+
217
+ wrapper.find('input').simulate('focus');
218
+ expect(wrapper.find("td[value=".concat(mockCurrentYear, "]")).hasClass('current')).toBeTruthy();
219
+ wrapper.find('.hi-datepicker__header-btns').at(1).childAt(0).simulate('click');
220
+ expect(wrapper.find("td[value=".concat(mockCurrentYear + 10 + '', "]")).hasClass('current')).toBeTruthy();
221
+ });
222
+ it('month', function () {
223
+ var callback = jest.fn();
224
+ var wrapper = (0, _enzyme.mount)(_react["default"].createElement(_index["default"], {
225
+ type: "month",
226
+ onChange: callback,
227
+ value: mockDate
228
+ }));
229
+ expect(wrapper.find('input').getDOMNode().getAttribute('value')).toEqual('2019-11');
230
+ expect(wrapper.find('input').getDOMNode().getAttribute('placeholder')).toEqual('请选择月');
231
+ wrapper.find('input').simulate('focus');
232
+ expect(wrapper.find("td[value=".concat(mockCurrentMonth + 1 + '', "]")).hasClass('current')).toBeFalsy();
233
+ wrapper.setProps({
234
+ value: (0, _dateUtil.subMonths)(mockDate, 1)
235
+ });
236
+ expect(wrapper.find("td[value=".concat(mockCurrentMonth - 1 + '', "]")).hasClass('current')).toBeTruthy();
237
+ wrapper.find('.hi-datepicker__calender').simulate('click', {
238
+ target: wrapper.find("td[value=".concat(mockCurrentMonth, "]")).getDOMNode()
239
+ });
240
+ expect(callback).toHaveBeenCalled(); // // expect(callback).toHaveBeenCalledWith(new Date(), mockCurrentYear)
241
+
242
+ wrapper.find('input').simulate('focus');
243
+ expect(wrapper.find("td[value=".concat(mockCurrentMonth, "]")).hasClass('current')).toBeTruthy();
244
+ wrapper.find('.hi-datepicker__header-text').simulate('click');
245
+ expect(wrapper.find('td').first().text()).toEqual('2015');
246
+ expect(wrapper.find('td').last().text()).toEqual('2026');
247
+ });
248
+ it('daterange', function () {
249
+ var callback = jest.fn();
250
+ var wrapper = (0, _enzyme.mount)(_react["default"].createElement(_index["default"], {
251
+ type: "daterange",
252
+ onChange: callback
253
+ }));
254
+ expect(wrapper.find('input').at(0).getDOMNode().getAttribute('value')).toEqual('');
255
+ expect(wrapper.find('input').at(0).getDOMNode().getAttribute('placeholder')).toEqual('开始日期');
256
+ expect(wrapper.find('input').at(1).getDOMNode().getAttribute('value')).toEqual('');
257
+ expect(wrapper.find('input').at(1).getDOMNode().getAttribute('placeholder')).toEqual('结束日期');
258
+ wrapper.find('input').first().simulate('focus');
259
+ expect(wrapper.find(".hi-datepicker__panel--left td[value=".concat(realCurrentDay, "]:not(.prev):not(.next)")).hasClass('today')).toBeTruthy();
260
+ wrapper.find('.hi-datepicker__header-text').first().simulate('click');
261
+ var year = new Date().getFullYear();
262
+ expect(wrapper.find('.hi-datepicker__header-text').first().text()).toEqual("".concat(year - 4, "~").concat(year + 7));
263
+ wrapper.find(".hi-datepicker__panel--left td[value=".concat(year + 1, "]:not(.prev):not(.next)")).simulate('click');
264
+ expect(wrapper.find('.hi-datepicker__calender-container--month')).toHaveLength(1);
265
+ wrapper.find(".hi-datepicker__panel--left td[value=12]:not(.prev):not(.next)").simulate('click');
266
+ expect(wrapper.find('.hi-datepicker__header-text').first().text()).toEqual("".concat(year + 1, "\u5E74 12\u6708")); // value 为 Date 实例的情况
267
+
268
+ wrapper.setProps({
269
+ value: mockDate
270
+ });
271
+ expect(wrapper.find('input').at(0).getDOMNode().getAttribute('value')).toEqual('2019-11-20');
272
+ expect(wrapper.find('input').at(1).getDOMNode().getAttribute('value')).toEqual('2019-11-20');
273
+ wrapper.find(_DatePicker.DatePicker).setState({
274
+ showPanel: false
275
+ });
276
+ wrapper.find('input').first().simulate('focus');
277
+ expect(wrapper.find(".hi-datepicker__panel--left td[value=20]:not(.prev):not(.next)").hasClass('range-se')).toBeTruthy(); // value 为 {start: Date, end: Date}
278
+
279
+ var rangeEnd = (0, _dateUtil.addDays)(mockDate, 30);
280
+ wrapper.setProps({
281
+ value: {
282
+ start: mockDate,
283
+ end: rangeEnd
284
+ }
285
+ });
286
+ wrapper.find(_DatePicker.DatePicker).setState({
287
+ showPanel: false
288
+ });
289
+ wrapper.find('input').first().simulate('focus');
290
+ expect(wrapper.find(".hi-datepicker__panel--left td[value=".concat(mockCurrentDay, "]:not(.prev):not(.next)")).hasClass('range-se')).toBeTruthy();
291
+ expect(wrapper.find(".hi-datepicker__panel--right td[value=".concat((0, _dateUtil.getDate)(rangeEnd), "]:not(.prev):not(.next)")).hasClass('range-se')).toBeTruthy();
292
+ wrapper.setProps({
293
+ disabled: true
294
+ });
295
+ expect(wrapper.find('.hi-datepicker__input').hasClass('hi-datepicker__input--disabled'));
296
+ wrapper.setProps({
297
+ disabled: false
298
+ }); // 左侧日历 header 点击事件
299
+ // 月份减少
300
+
301
+ wrapper.find('.hi-datepicker__panel--left').find('.hi-datepicker__header-btns').at(0).childAt(1).simulate('click');
302
+ expect(wrapper.find('.hi-datepicker__panel--left').find('.hi-datepicker__header-text').text()).toEqual(expect.stringContaining('10月')); // 月份增加
303
+
304
+ wrapper.find('.hi-datepicker__panel--left').find('.hi-datepicker__header-btns').at(1).childAt(0).simulate('click');
305
+ expect(wrapper.find('.hi-datepicker__panel--left').find('.hi-datepicker__header-text').text()).toEqual(expect.stringContaining('11月')); // 月份增加至右侧面板月份
306
+
307
+ wrapper.find('.hi-datepicker__panel--left').find('.hi-datepicker__header-btns').at(1).childAt(0).simulate('click');
308
+ expect(wrapper.find('.hi-datepicker__panel--left').find('.hi-datepicker__header-text').text()).toEqual(expect.stringContaining('11月')); // 年份增加
309
+
310
+ wrapper.find('.hi-datepicker__panel--left').find('.hi-datepicker__header-btns').at(1).childAt(1).simulate('click');
311
+ expect(wrapper.find('.hi-datepicker__panel--left').find('.hi-datepicker__header-text').text()).toEqual(expect.stringContaining('2019年')); // // 年份减少
312
+
313
+ wrapper.find('.hi-datepicker__panel--left').find('.hi-datepicker__header-btns').at(0).childAt(0).simulate('click');
314
+ expect(wrapper.find('.hi-datepicker__panel--left').find('.hi-datepicker__header-text').text()).toEqual(expect.stringContaining('2018年')); // 右侧日历 header 点击事件
315
+ // 年份减少
316
+
317
+ wrapper.find('.hi-datepicker__panel--right').find('.hi-datepicker__header-btns').at(0).childAt(0).simulate('click');
318
+ expect(wrapper.find('.hi-datepicker__panel--right').find('.hi-datepicker__header-text').text()).toEqual(expect.stringContaining('2018年')); // 再次点击年份减少,不能小于左侧年份
319
+
320
+ wrapper.find('.hi-datepicker__panel--right').find('.hi-datepicker__header-btns').at(0).childAt(0).simulate('click');
321
+ expect(wrapper.find('.hi-datepicker__panel--right').find('.hi-datepicker__header-text').text()).toEqual(expect.stringContaining('2018年')); // 右侧月份减少
322
+
323
+ wrapper.find('.hi-datepicker__panel--right').find('.hi-datepicker__header-btns').at(0).childAt(1).simulate('click');
324
+ expect(wrapper.find('.hi-datepicker__panel--right').find('.hi-datepicker__header-text').text()).toEqual(expect.stringContaining('12月')); // 先加后减(右侧月份)
325
+
326
+ wrapper.find('.hi-datepicker__panel--right').find('.hi-datepicker__header-btns').at(1).childAt(0).simulate('click');
327
+ wrapper.find('.hi-datepicker__panel--right').find('.hi-datepicker__header-btns').at(0).childAt(1).simulate('click');
328
+ wrapper.find('.hi-datepicker__panel--right').find('.hi-datepicker__header-btns').at(1).childAt(0).simulate('click');
329
+ expect(wrapper.find('.hi-datepicker__panel--right').find('.hi-datepicker__header-text').text()).toEqual(expect.stringMatching(/2019年\s+1月/)); // 年份增加
330
+
331
+ wrapper.find('.hi-datepicker__panel--right').find('.hi-datepicker__header-btns').at(1).childAt(1).simulate('click');
332
+ expect(wrapper.find('.hi-datepicker__panel--right').find('.hi-datepicker__header-text').text()).toEqual(expect.stringContaining('2020年')); // Pick
333
+
334
+ wrapper.find('.hi-datepicker__panel--left').find('.hi-datepicker__calender').simulate('click', {
335
+ target: wrapper.find(".hi-datepicker__panel--left td[value=".concat(11, "]:not(.prev):not(.next)")).getDOMNode()
336
+ });
337
+ expect(wrapper.find(".hi-datepicker__panel--left td[value=".concat(11, "]:not(.prev):not(.next)")).hasClass('range-se')).toBeTruthy();
338
+ wrapper.find('.hi-datepicker__panel--right').find('.hi-datepicker__calender').simulate('click', {
339
+ target: wrapper.find(".hi-datepicker__panel--left td[value=".concat(12, "]:not(.prev):not(.next)")).getDOMNode()
340
+ });
341
+ expect(wrapper.find('.hi-datepicker__panel')).toHaveLength(0);
342
+ expect(callback).toHaveBeenCalled();
343
+ expect(wrapper.find('input').at(0).getDOMNode().getAttribute('value')).toEqual('2018-11-11');
344
+ expect(wrapper.find('input').at(1).getDOMNode().getAttribute('value')).toEqual('2020-01-12');
345
+ wrapper.setProps({
346
+ value: mockDate
347
+ });
348
+ wrapper.find('input').first().simulate('focus');
349
+ wrapper.find('.hi-datepicker__panel--left').find('.hi-datepicker__calender').simulate('click', {
350
+ target: wrapper.find(".hi-datepicker__panel--left td[value=".concat((0, _dateUtil.getDate)(mockDate), "]:not(.prev):not(.next)")).getDOMNode()
351
+ });
352
+ wrapper.find('.hi-datepicker__calender').at(0).simulate('mouseMove', {
353
+ target: wrapper.find(".hi-datepicker__panel--left td[value=".concat((0, _dateUtil.getDate)(mockDate) + 1, "]:not(.prev):not(.next)")).find('span').getDOMNode()
354
+ });
355
+ wrapper.find('.hi-datepicker__calender').at(0).simulate('mouseMove', {
356
+ target: wrapper.find(".hi-datepicker__panel--left td[value=".concat((0, _dateUtil.getDate)(mockDate) + 2, "]:not(.prev):not(.next)")).find('span').getDOMNode()
357
+ });
358
+ expect(wrapper.find(".hi-datepicker__panel--left td[value=".concat((0, _dateUtil.getDate)(mockDate) + 1, "]:not(.prev):not(.next)")).hasClass('in-range')).toBeTruthy(); // 英文 header
359
+
360
+ wrapper.setProps({
361
+ showPanel: false,
362
+ locale: 'en-US'
363
+ });
364
+ wrapper.find('input').at(0).simulate('focus');
365
+ expect(wrapper.find('.hi-datepicker__panel--left').find('.hi-datepicker__header-text').text()).toEqual(expect.not.stringContaining('年'));
366
+ });
367
+ it('weekrange', function () {
368
+ var callback = jest.fn();
369
+ var wrapper = (0, _enzyme.mount)(_react["default"].createElement(_index["default"], {
370
+ type: "weekrange",
371
+ onChange: callback
372
+ }));
373
+ expect(wrapper.find('input').at(0).getDOMNode().getAttribute('value')).toEqual('');
374
+ expect(wrapper.find('input').at(0).getDOMNode().getAttribute('placeholder')).toEqual('开始周');
375
+ expect(wrapper.find('input').at(1).getDOMNode().getAttribute('value')).toEqual('');
376
+ expect(wrapper.find('input').at(1).getDOMNode().getAttribute('placeholder')).toEqual('结束周');
377
+ wrapper.find('input').first().simulate('focus');
378
+ expect(wrapper.find(".hi-datepicker__panel--left td[value=".concat(realCurrentDay, "]:not(.prev):not(.next)")).hasClass('today')).toBeTruthy();
379
+ wrapper.find('.hi-datepicker__header-text').first().simulate('click');
380
+ var year = new Date().getFullYear();
381
+ expect(wrapper.find('.hi-datepicker__header-text').first().text()).toEqual("".concat(year - 4, "~").concat(year + 7));
382
+ wrapper.find(".hi-datepicker__panel--left td[value=".concat(year + 1, "]:not(.prev):not(.next)")).simulate('click');
383
+ expect(wrapper.find('.hi-datepicker__calender-container--month')).toHaveLength(1);
384
+ wrapper.find(".hi-datepicker__panel--left td[value=12]:not(.prev):not(.next)").simulate('click');
385
+ expect(wrapper.find('.hi-datepicker__header-text').first().text()).toEqual("".concat(year + 1, "\u5E74 12\u6708")); // value 为 Date 实例的情况
386
+
387
+ wrapper.setProps({
388
+ value: mockDate
389
+ });
390
+ wrapper.find(_DatePicker.DatePicker).setState({
391
+ showPanel: false
392
+ });
393
+ wrapper.find('input').first().simulate('focus');
394
+ expect(wrapper.find(".hi-datepicker__panel--left td[value=".concat((0, _dateUtil.getDate)((0, _dateUtil.startOfWeek)(mockDate)), "]:not(.prev):not(.next)")).hasClass('range-se')).toBeTruthy();
395
+ expect(wrapper.find(".hi-datepicker__panel--left td[value=".concat((0, _dateUtil.getDate)((0, _dateUtil.endOfWeek)(mockDate)), "]:not(.prev):not(.next)")).hasClass('range-se')).toBeTruthy(); // value 为 {start: Date, end: Date}
396
+
397
+ wrapper.find(_DatePicker.DatePicker).setState({
398
+ showPanel: false
399
+ });
400
+ var rangeEnd = (0, _dateUtil.addDays)(mockDate, 30);
401
+ wrapper.setProps({
402
+ value: {
403
+ start: mockDate,
404
+ end: rangeEnd
405
+ }
406
+ });
407
+ wrapper.find('input').first().simulate('focus');
408
+ expect(wrapper.find(".hi-datepicker__panel--left td[value=".concat(mockCurrentDay, "]:not(.prev):not(.next)")).hasClass('range-se')).toBeTruthy();
409
+ expect(wrapper.find(".hi-datepicker__panel--right td[value=".concat((0, _dateUtil.getDate)(rangeEnd), "]:not(.prev):not(.next)")).hasClass('range-se')).toBeTruthy(); // 左侧日历 header 点击事件
410
+ // 月份减少
411
+
412
+ wrapper.find('.hi-datepicker__panel--left').find('.hi-datepicker__header-btns').at(0).childAt(1).simulate('click');
413
+ expect(wrapper.find('.hi-datepicker__panel--left').find('.hi-datepicker__header-text').text()).toEqual(expect.stringContaining('10月')); // 月份增加
414
+
415
+ wrapper.find('.hi-datepicker__panel--left').find('.hi-datepicker__header-btns').at(1).childAt(0).simulate('click');
416
+ expect(wrapper.find('.hi-datepicker__panel--left').find('.hi-datepicker__header-text').text()).toEqual(expect.stringContaining('11月')); // 月份增加至右侧面板月份
417
+
418
+ wrapper.find('.hi-datepicker__panel--left').find('.hi-datepicker__header-btns').at(1).childAt(0).simulate('click');
419
+ expect(wrapper.find('.hi-datepicker__panel--left').find('.hi-datepicker__header-text').text()).toEqual(expect.stringContaining('11月')); // 年份增加
420
+
421
+ wrapper.find('.hi-datepicker__panel--left').find('.hi-datepicker__header-btns').at(1).childAt(1).simulate('click');
422
+ expect(wrapper.find('.hi-datepicker__panel--left').find('.hi-datepicker__header-text').text()).toEqual(expect.stringContaining('2019年')); // // 年份减少
423
+
424
+ wrapper.find('.hi-datepicker__panel--left').find('.hi-datepicker__header-btns').at(0).childAt(0).simulate('click');
425
+ expect(wrapper.find('.hi-datepicker__panel--left').find('.hi-datepicker__header-text').text()).toEqual(expect.stringContaining('2018年')); // 右侧日历 header 点击事件
426
+ // 年份减少
427
+
428
+ wrapper.find('.hi-datepicker__panel--right').find('.hi-datepicker__header-btns').at(0).childAt(0).simulate('click');
429
+ expect(wrapper.find('.hi-datepicker__panel--right').find('.hi-datepicker__header-text').text()).toEqual(expect.stringContaining('2018年')); // 再次点击年份减少,不能小于左侧年份
430
+
431
+ wrapper.find('.hi-datepicker__panel--right').find('.hi-datepicker__header-btns').at(0).childAt(0).simulate('click');
432
+ expect(wrapper.find('.hi-datepicker__panel--right').find('.hi-datepicker__header-text').text()).toEqual(expect.stringContaining('2018年')); // 右侧月份减少
433
+
434
+ wrapper.find('.hi-datepicker__panel--right').find('.hi-datepicker__header-btns').at(0).childAt(1).simulate('click');
435
+ expect(wrapper.find('.hi-datepicker__panel--right').find('.hi-datepicker__header-text').text()).toEqual(expect.stringContaining('12月')); // 先加后减(右侧月份)
436
+
437
+ wrapper.find('.hi-datepicker__panel--right').find('.hi-datepicker__header-btns').at(1).childAt(0).simulate('click');
438
+ wrapper.find('.hi-datepicker__panel--right').find('.hi-datepicker__header-btns').at(0).childAt(1).simulate('click');
439
+ wrapper.find('.hi-datepicker__panel--right').find('.hi-datepicker__header-btns').at(1).childAt(0).simulate('click');
440
+ expect(wrapper.find('.hi-datepicker__panel--right').find('.hi-datepicker__header-text').text()).toEqual(expect.stringMatching(/2019年\s+1月/)); // 年份增加
441
+
442
+ wrapper.find('.hi-datepicker__panel--right').find('.hi-datepicker__header-btns').at(1).childAt(1).simulate('click');
443
+ expect(wrapper.find('.hi-datepicker__panel--right').find('.hi-datepicker__header-text').text()).toEqual(expect.stringContaining('2020年'));
444
+ wrapper.find('.hi-datepicker__calender').at(0).simulate('click', {
445
+ target: wrapper.find(".hi-datepicker__panel--left td[value=".concat((0, _dateUtil.getDate)(mockDate), "]:not(.prev):not(.next)")).getDOMNode()
446
+ });
447
+ wrapper.find('.hi-datepicker__calender').at(0).simulate('mouseMove', {
448
+ target: wrapper.find(".hi-datepicker__panel--left td[value=".concat((0, _dateUtil.getDate)(mockDate) + 1, "]:not(.prev):not(.next)")).find('span').getDOMNode()
449
+ });
450
+ expect(wrapper.find(".hi-datepicker__panel--left td[value=".concat((0, _dateUtil.getDate)(mockDate) + 1, "]:not(.prev):not(.next)")).hasClass('in-range')).toBeTruthy();
451
+ wrapper.find('.hi-datepicker__calender').at(1).simulate('click', {
452
+ target: wrapper.find(".hi-datepicker__panel--right td[value=".concat((0, _dateUtil.getDate)(mockDate), "]:not(.prev):not(.next)")).getDOMNode()
453
+ });
454
+ expect(callback).toHaveBeenCalled(); // 英文 header
455
+
456
+ wrapper.setProps({
457
+ showPanel: false,
458
+ locale: 'en-US'
459
+ });
460
+ wrapper.find('input').at(0).simulate('focus');
461
+ expect(wrapper.find('.hi-datepicker__panel--left').find('.hi-datepicker__header-text').text()).toEqual(expect.not.stringContaining('年'));
462
+ });
463
+ it('timeperiod', function () {
464
+ var callback = jest.fn();
465
+ jest.useFakeTimers();
466
+ var wrapper = (0, _enzyme.mount)(_react["default"].createElement(_index["default"], {
467
+ type: "timeperiod",
468
+ onChange: callback
469
+ }));
470
+ expect(wrapper.find('input').at(0).getDOMNode().getAttribute('value')).toEqual('');
471
+ expect(wrapper.find('input').at(0).getDOMNode().getAttribute('placeholder')).toEqual('开始日期时间');
472
+ expect(wrapper.find('input').at(1).getDOMNode().getAttribute('value')).toEqual('');
473
+ expect(wrapper.find('input').at(1).getDOMNode().getAttribute('placeholder')).toEqual('结束日期时间');
474
+ wrapper.find('input').first().simulate('focus');
475
+ expect(wrapper.find(".hi-datepicker__panel--left td[value=".concat(realCurrentDay, "]:not(.prev):not(.next)")).hasClass('current')).toBeTruthy(); // value 为 Date 实例的情况
476
+
477
+ wrapper.setProps({
478
+ value: mockDate
479
+ });
480
+ expect(wrapper.find('input').at(0).getDOMNode().getAttribute('value')).toEqual('2019-11-20 12:00:00');
481
+ expect(wrapper.find('input').at(1).getDOMNode().getAttribute('value')).toEqual('2019-11-20 16:00:00');
482
+ wrapper.find(_DatePicker.DatePicker).setState({
483
+ showPanel: false
484
+ });
485
+ wrapper.find('input').first().simulate('focus');
486
+ expect(wrapper.find(".hi-datepicker__panel--left td[value=20]:not(.prev):not(.next)").hasClass('current')).toBeTruthy();
487
+ expect(wrapper.find('.hi-datepicker__period-item').at(3).hasClass('hi-datepicker__period-item--active')).toBeTruthy(); // value 为 {start: Date, end: Date}
488
+
489
+ var rangeEnd = (0, _dateUtil.addHours)(mockDate, 4);
490
+ wrapper.setProps({
491
+ value: {
492
+ start: mockDate,
493
+ end: rangeEnd
494
+ }
495
+ });
496
+ wrapper.find(_DatePicker.DatePicker).setState({
497
+ showPanel: false
498
+ });
499
+ wrapper.find('input').first().simulate('focus');
500
+ expect(wrapper.find(".hi-datepicker__panel--left td[value=20]:not(.prev):not(.next)").hasClass('current')).toBeTruthy();
501
+ expect(wrapper.find('.hi-datepicker__period-item').at(3).hasClass('hi-datepicker__period-item--active')).toBeTruthy();
502
+ wrapper.find('.hi-datepicker__calender').simulate('click', {
503
+ target: wrapper.find(".hi-datepicker__panel--left td[value=14]:not(.prev):not(.next)").getDOMNode()
504
+ });
505
+ wrapper.find('.hi-datepicker__period-item').at(3).simulate('click');
506
+ document.body.click();
507
+ expect(callback).toHaveBeenCalled();
508
+ wrapper.find('input').first().simulate('focus');
509
+ wrapper.setProps({
510
+ timeInterval: 120
511
+ });
512
+ expect(wrapper.find('.hi-datepicker__period-item')).toHaveLength(12);
513
+ wrapper.setProps({
514
+ timeInterval: 30
515
+ });
516
+ expect(wrapper.find('.hi-datepicker__period-item')).toHaveLength(48);
517
+ jest.runAllTimers();
518
+ });
519
+ it('minDate&maxDate', function () {
520
+ var callback = jest.fn();
521
+ var wrapper = (0, _enzyme.mount)(_react["default"].createElement("div", null, _react["default"].createElement(_index["default"], {
522
+ type: "date",
523
+ min: mockMinDate,
524
+ onChange: callback,
525
+ value: mockDate
526
+ }), _react["default"].createElement(_index["default"], {
527
+ type: "date",
528
+ max: mockMaxDate,
529
+ onChange: callback,
530
+ value: mockDate
531
+ }), _react["default"].createElement(_index["default"], {
532
+ type: "date",
533
+ min: mockMinDate,
534
+ max: mockMaxDate,
535
+ onChange: callback,
536
+ value: mockDate
537
+ })));
538
+ wrapper.find('input').first().simulate('focus');
539
+ expect(wrapper.find(".hi-datepicker__panel--left td[value=".concat((0, _dateUtil.getDate)(mockMinDate) - 1, "]:not(.prev):not(.next)")).hasClass('disabled')).toBeTruthy();
540
+ wrapper.find('.hi-datepicker__calender').simulate('click', {
541
+ target: wrapper.find(".hi-datepicker__panel--left td[value=".concat((0, _dateUtil.getDate)(mockMinDate) - 1, "]:not(.prev):not(.next)")).getDOMNode()
542
+ });
543
+ expect(callback).not.toHaveBeenCalled();
544
+ wrapper.find('input').at(1).simulate('focus');
545
+ expect(wrapper.find(".hi-datepicker__panel--left td[value=".concat((0, _dateUtil.getDate)(mockMaxDate) + 1, "]:not(.prev):not(.next)")).at(1).hasClass('disabled')).toBeTruthy();
546
+ wrapper.find('.hi-datepicker__calender').at(1).simulate('click', {
547
+ target: wrapper.find(".hi-datepicker__panel--left td[value=".concat((0, _dateUtil.getDate)(mockMaxDate) + 1, "]:not(.prev):not(.next)")).at(1).getDOMNode()
548
+ });
549
+ expect(callback).not.toHaveBeenCalled();
550
+ wrapper.find('input').at(2).simulate('focus');
551
+ expect(wrapper.find(".hi-datepicker__panel--left td[value=".concat((0, _dateUtil.getDate)(mockMinDate) - 1, "]:not(.prev):not(.next)")).at(2).hasClass('disabled')).toBeTruthy();
552
+ expect(wrapper.find(".hi-datepicker__panel--left td[value=".concat((0, _dateUtil.getDate)(mockMaxDate) + 1, "]:not(.prev):not(.next)")).at(2).hasClass('disabled')).toBeTruthy();
553
+ wrapper.find('.hi-datepicker__calender').at(2).simulate('click', {
554
+ target: wrapper.find(".hi-datepicker__panel--left td[value=".concat((0, _dateUtil.getDate)(mockMinDate) - 1, "]:not(.prev):not(.next)")).at(2).getDOMNode()
555
+ });
556
+ expect(callback).not.toHaveBeenCalled();
557
+ wrapper.find('.hi-datepicker__calender').at(2).simulate('click', {
558
+ target: wrapper.find(".hi-datepicker__panel--left td[value=".concat((0, _dateUtil.getDate)(mockMaxDate) + 1, "]:not(.prev):not(.next)")).at(2).getDOMNode()
559
+ });
560
+ expect(callback).not.toHaveBeenCalled();
561
+ });
562
+ it('disabled', function () {
563
+ var wrapper = (0, _enzyme.mount)(_react["default"].createElement(_index["default"], {
564
+ type: "date",
565
+ disabled: true
566
+ }));
567
+ expect(wrapper.find('.hi-datepicker__input--disabled')).toHaveLength(1);
568
+ wrapper.setProps({
569
+ disabled: false
570
+ });
571
+ expect(wrapper.find('.hi-datepicker__input--disabled')).toHaveLength(0);
572
+ });
573
+ it('clearable', function () {
574
+ var wrapper = (0, _enzyme.mount)(_react["default"].createElement(_index["default"], {
575
+ type: "date",
576
+ value: mockDate
577
+ }));
578
+ wrapper.find('input').simulate('focus');
579
+ expect(wrapper.find('.hi-datepicker__input-icon').hasClass('clear')).toBeTruthy();
580
+ wrapper.find('.hi-datepicker__input-icon').simulate('click');
581
+ expect(wrapper.find('input').at(0).getDOMNode().getAttribute('value')).toEqual('');
582
+ wrapper.setProps({
583
+ clearable: false
584
+ });
585
+ wrapper.find('input').simulate('focus');
586
+ expect(wrapper.find('.hi-datepicker__input-icon').hasClass('clear')).toBeFalsy();
587
+ expect(wrapper.find('.hi-datepicker__input-icon').hasClass('icon-date')).toBeTruthy();
588
+ });
589
+ it('shortcuts', function () {
590
+ var callback = jest.fn();
591
+ var wrapper = (0, _enzyme.mount)(_react["default"].createElement(_index["default"], {
592
+ type: "daterange",
593
+ onChange: callback,
594
+ value: mockDate,
595
+ shortcuts: ['近一周', '近一月', '近三月', '近一年']
596
+ }));
597
+ wrapper.find('input').first().simulate('focus');
598
+ expect(wrapper.find('.hi-datepicker__shortcuts')).toHaveLength(1);
599
+ wrapper.find('.hi-datepicker__shortcuts').childAt(0).simulate('click', {
600
+ target: {
601
+ innerText: '近一周'
602
+ }
603
+ });
604
+ expect(callback).toHaveBeenCalled();
605
+ wrapper.find('input').first().simulate('focus');
606
+ wrapper.find('.hi-datepicker__shortcuts').childAt(1).simulate('click', {
607
+ target: {
608
+ innerText: '近一月'
609
+ }
610
+ });
611
+ expect(callback).toHaveBeenCalled();
612
+ wrapper.find('input').first().simulate('focus');
613
+ wrapper.find('.hi-datepicker__shortcuts').childAt(2).simulate('click', {
614
+ target: {
615
+ innerText: '近三月'
616
+ }
617
+ });
618
+ expect(callback).toHaveBeenCalled();
619
+ wrapper.find('input').first().simulate('focus');
620
+ wrapper.find('.hi-datepicker__shortcuts').childAt(3).simulate('click', {
621
+ target: {
622
+ innerText: '近一年'
623
+ }
624
+ });
625
+ expect(callback).toHaveBeenCalled();
626
+ });
627
+ it('placeholder', function () {
628
+ var wrapper = (0, _enzyme.mount)(_react["default"].createElement("div", null, _react["default"].createElement(_index["default"], {
629
+ type: "daterange"
630
+ }), _react["default"].createElement(_index["default"], {
631
+ type: "daterange",
632
+ placeholder: "\u8BF7\u9009\u62E9"
633
+ }), _react["default"].createElement(_index["default"], {
634
+ type: "daterange",
635
+ placeholder: ['请选择']
636
+ }), _react["default"].createElement(_index["default"], {
637
+ type: "daterange",
638
+ placeholder: ['请选择开始日期', '请选择结束日期']
639
+ })));
640
+ expect(wrapper.find('input').at(0).getDOMNode().getAttribute('placeholder')).toEqual('开始日期');
641
+ expect(wrapper.find('input').at(1).getDOMNode().getAttribute('placeholder')).toEqual('结束日期');
642
+ expect(wrapper.find('input').at(2).getDOMNode().getAttribute('placeholder')).toEqual('请选择');
643
+ expect(wrapper.find('input').at(3).getDOMNode().getAttribute('placeholder')).toEqual('请选择');
644
+ expect(wrapper.find('input').at(4).getDOMNode().getAttribute('placeholder')).toEqual('请选择');
645
+ expect(wrapper.find('input').at(5).getDOMNode().getAttribute('placeholder')).toEqual('请选择');
646
+ expect(wrapper.find('input').at(6).getDOMNode().getAttribute('placeholder')).toEqual('请选择开始日期');
647
+ expect(wrapper.find('input').at(7).getDOMNode().getAttribute('placeholder')).toEqual('请选择结束日期');
648
+ });
649
+ it('showTime', function () {
650
+ var wrapper = (0, _enzyme.mount)(_react["default"].createElement("div", null, _react["default"].createElement(_index["default"], {
651
+ type: "date",
652
+ showTime: true
653
+ }), _react["default"].createElement(_index["default"], {
654
+ type: "daterange",
655
+ showTime: true
656
+ })));
657
+ expect(wrapper.find('.hi-datepicker__input-icon').at(0).hasClass('icon-time')).toBeTruthy();
658
+ expect(wrapper.find('.hi-datepicker__input-icon').at(1).hasClass('icon-time')).toBeTruthy();
659
+ wrapper.find('input').at(0).simulate('focus');
660
+ expect(wrapper.find('.hi-timepicker')).toHaveLength(1);
661
+ wrapper.find('input').at(1).simulate('focus');
662
+ expect(wrapper.find('.hi-datepicker__footer')).toHaveLength(1);
663
+ wrapper.find('.hi-datepicker__footer').simulate('click');
664
+ expect(wrapper.find('.hi-datepicker__mask')).toHaveLength(1);
665
+ expect(wrapper.find('.hi-timepicker--timerange')).toHaveLength(1);
666
+ wrapper.find('.hi-timepicker__list').at(0).simulate('click', {
667
+ type: 'hours',
668
+ target: wrapper.find('.hi-timepicker__list').at(0).find('.hi-timepicker__item').at(17).getDOMNode()
669
+ }); // TODO: 验证日期范围下的时间更改结果
670
+ // expect(wrapper.find('.hi-datepicker__time-text').text()).toEqual(expect.stringMatching(/00:\s+/))
671
+
672
+ wrapper.find('.hi-datepicker__mask').simulate('click');
673
+ expect(wrapper.find('.hi-datepicker__mask')).toHaveLength(0);
674
+ expect(wrapper.find('.hi-timepicker--timerange')).toHaveLength(0);
675
+ });
676
+ it('weekOffset', function () {
677
+ var wrapper = (0, _enzyme.mount)(_react["default"].createElement(_index["default"], {
678
+ type: "week",
679
+ weekOffset: 1
680
+ }));
681
+ wrapper.find('input').simulate('focus');
682
+ expect(wrapper.find('th').at(0).text()).toEqual('一');
683
+ });
684
+ it('time', function () {
685
+ var callback = jest.fn();
686
+ var wrapper = (0, _enzyme.mount)(_react["default"].createElement(_TimePicker["default"], {
687
+ onChange: callback
688
+ }));
689
+ wrapper.find('input').simulate('focus');
690
+ document.body.click();
691
+ expect(callback).toHaveBeenCalled(); // 禁用小时
692
+
693
+ wrapper.setProps({
694
+ disabledHours: [2, 3, 4, 5, 6, 7]
695
+ });
696
+ wrapper.find('input').simulate('focus');
697
+ expect(wrapper.find('.hi-timepicker__list').at(0).find('li[value=2]').hasClass('hi-timepicker__item--disabled')).toBeTruthy();
698
+ wrapper.setProps({
699
+ disabledHours: function disabledHours() {
700
+ return [3];
701
+ }
702
+ });
703
+ expect(wrapper.find('.hi-timepicker__list').at(0).find('li[value=2]').hasClass('hi-timepicker__item--disabled')).toBeFalsy();
704
+ expect(wrapper.find('.hi-timepicker__list').at(0).find('li[value=3]').hasClass('hi-timepicker__item--disabled')).toBeTruthy();
705
+ wrapper.find('.hi-timepicker__list').at(0).find('li[value=3]').simulate('click');
706
+ wrapper.setProps({
707
+ disabledHours: function disabledHours() {
708
+ return null;
709
+ }
710
+ });
711
+ expect(wrapper.find('.hi-timepicker__list').at(0).children('.hi-timepicker__item--disabled')).toHaveLength(0); // 禁用分钟
712
+
713
+ wrapper.setProps({
714
+ disabledHours: [2],
715
+ disabledMinutes: [2]
716
+ });
717
+ expect(wrapper.find('.hi-timepicker__list').at(1).find('li[value=2]').hasClass('hi-timepicker__item--disabled')).toBeTruthy();
718
+ wrapper.setProps({
719
+ disabledMinutes: function disabledMinutes() {
720
+ return [3];
721
+ }
722
+ });
723
+ expect(wrapper.find('.hi-timepicker__list').at(1).find('li[value=2]').hasClass('hi-timepicker__item--disabled')).toBeFalsy();
724
+ expect(wrapper.find('.hi-timepicker__list').at(1).find('li[value=3]').hasClass('hi-timepicker__item--disabled')).toBeTruthy();
725
+ wrapper.find('.hi-timepicker__list').at(1).find('li[value=3]').simulate('click');
726
+ wrapper.setProps({
727
+ disabledMinutes: function disabledMinutes() {
728
+ return null;
729
+ }
730
+ });
731
+ expect(wrapper.find('.hi-timepicker__list').at(1).children('.hi-timepicker__item--disabled')).toHaveLength(0); // 禁用分钟
732
+
733
+ wrapper.setProps({
734
+ disabledHours: [2],
735
+ disabledMinutes: [2],
736
+ disabledSeconds: [2]
737
+ });
738
+ expect(wrapper.find('.hi-timepicker__list').at(2).find('li[value=2]').hasClass('hi-timepicker__item--disabled')).toBeTruthy();
739
+ wrapper.setProps({
740
+ disabledSeconds: function disabledSeconds() {
741
+ return [3];
742
+ }
743
+ });
744
+ expect(wrapper.find('.hi-timepicker__list').at(2).find('li[value=2]').hasClass('hi-timepicker__item--disabled')).toBeFalsy();
745
+ expect(wrapper.find('.hi-timepicker__list').at(2).find('li[value=3]').hasClass('hi-timepicker__item--disabled')).toBeTruthy();
746
+ wrapper.find('.hi-timepicker__list').at(2).find('li[value=3]').simulate('click');
747
+ wrapper.setProps({
748
+ disabledSeconds: function disabledSeconds() {
749
+ return null;
750
+ }
751
+ });
752
+ expect(wrapper.find('.hi-timepicker__list').at(2).children('.hi-timepicker__item--disabled')).toHaveLength(0);
753
+ });
754
+ it('timerange', function () {
755
+ var callback = jest.fn();
756
+ var wrapper = (0, _enzyme.mount)(_react["default"].createElement(_TimePicker["default"], {
757
+ type: "timerange",
758
+ onChange: callback
759
+ }));
760
+ wrapper.find('input').at(0).simulate('focus');
761
+ wrapper.find('.hi-timepicker__list').at(0).simulate('click', {
762
+ target: wrapper.find('.hi-timepicker__list').at(0).find('li[value=2]').getDOMNode()
763
+ });
764
+ wrapper.find('.hi-timepicker__list').at(3).simulate('click', {
765
+ target: wrapper.find('.hi-timepicker__list').at(3).find('li[value=2]').getDOMNode()
766
+ });
767
+ });
768
+ });
769
+ describe('branches', function () {
770
+ it('clickOutSide', function () {
771
+ var callback = jest.fn();
772
+ var wrapper = (0, _enzyme.mount)(_react["default"].createElement(_index["default"], {
773
+ onChange: callback,
774
+ value: mockDate
775
+ }));
776
+ wrapper.find('input').simulate('focus');
777
+ wrapper.find('.hi-datepicker__input-icon').simulate('click');
778
+ expect(callback).toHaveBeenCalled();
779
+ });
780
+ it('inputOnChange', function () {
781
+ var callback = jest.fn(); // TODO: type === daterange 时,无法通过编辑输入框更改时间
782
+
783
+ var wrapper = (0, _enzyme.mount)(_react["default"].createElement(_index["default"], {
784
+ type: "daterange",
785
+ onChange: callback
786
+ }));
787
+ wrapper.find('input').at(0).simulate('focus');
788
+ wrapper.find('input').at(0).simulate('change', {
789
+ target: {
790
+ value: '2019-11-14'
791
+ }
792
+ });
793
+ wrapper.find('input').at(1).simulate('change', {
794
+ target: {
795
+ value: '2019-11-15'
796
+ }
797
+ }); // expect(wrapper.find(`.hi-datepicker__panel--left td[value=${14}]:not(.prev):not(.next)`).hasClass('current')).toBeTruthy()
798
+ });
799
+ it('iconClick', function () {
800
+ var callback = jest.fn();
801
+ var wrapper = (0, _enzyme.mount)(_react["default"].createElement(_index["default"], {
802
+ type: "date",
803
+ onChange: callback
804
+ }));
805
+ wrapper.find('.hi-datepicker__input-icon').simulate('click');
806
+ expect(wrapper.find('.hi-datepicker__panel')).toHaveLength(1);
807
+ wrapper.setProps({
808
+ disabled: true
809
+ });
810
+ wrapper.find(_DatePicker.DatePicker).setState({
811
+ showPanel: false
812
+ });
813
+ wrapper.find('.hi-datepicker__input-icon').simulate('click');
814
+ expect(wrapper.find('.hi-datepicker__panel')).toHaveLength(0);
815
+ });
816
+ it('time-format', function () {
817
+ var callback = jest.fn();
818
+ var wrapper = (0, _enzyme.mount)(_react["default"].createElement(_TimePicker["default"], {
819
+ onChange: callback,
820
+ format: "hh"
821
+ }));
822
+ wrapper.find('input').simulate('focus');
823
+ wrapper.setProps({
824
+ value: new Date()
825
+ });
826
+ expect(wrapper.find('input').getDOMNode().getAttribute('value')).toEqual((0, _dateUtil.dateFormat)(new Date(), 'hh'));
827
+ });
828
+ it('time-list', function () {
829
+ var date = new Date('2019-11-15 12:00:00');
830
+ var callback = jest.fn();
831
+ var wrapper = (0, _enzyme.mount)(_react["default"].createElement(_TimePicker["default"], {
832
+ onChange: callback,
833
+ value: date
834
+ }));
835
+ jest.useFakeTimers();
836
+ wrapper.find('input').simulate('focus');
837
+ wrapper.find('.hi-timepicker__list-container').at(0).simulate('mouseEnter');
838
+ expect(wrapper.find('.hi-timepicker__page-turn')).toHaveLength(2);
839
+ wrapper.find('.hi-timepicker__page-turn').at(0).simulate('click');
840
+ expect(wrapper.find('.hi-timepicker__list').at(0).find("li[value=".concat(date.getHours() - 1, "]")).hasClass('hi-timepicker__item--current')).toBeTruthy();
841
+ wrapper.find('.hi-timepicker__page-turn').at(1).simulate('click');
842
+ expect(wrapper.find('.hi-timepicker__list').at(0).find("li[value=".concat(date.getHours(), "]")).hasClass('hi-timepicker__item--current')).toBeTruthy();
843
+ wrapper.setProps({
844
+ value: date,
845
+ disabledHours: [11, 10, 9]
846
+ });
847
+ wrapper.find('.hi-timepicker__list-container').at(0).simulate('mouseEnter');
848
+ wrapper.find('.hi-timepicker__page-turn').at(0).simulate('click');
849
+ expect(wrapper.find('.hi-timepicker__list').at(0).find("li[value=".concat(8, "]")).hasClass('hi-timepicker__item--current')).toBeTruthy();
850
+ wrapper.setProps({
851
+ value: date
852
+ });
853
+ wrapper.update(); // 列表点击事件
854
+
855
+ wrapper.find('.hi-timepicker__list').at(0).simulate('click');
856
+ expect(wrapper.find('.hi-timepicker__list').at(0).find("li[value=".concat(8, "]")).hasClass('hi-timepicker__item--current')).toBeTruthy();
857
+ wrapper.find('.hi-timepicker__list').at(0).simulate('click', {
858
+ target: wrapper.find('.hi-timepicker__list').at(0).childAt(0).getDOMNode()
859
+ });
860
+ expect(wrapper.find('.hi-timepicker__list').at(0).find("li[value=".concat(8, "]")).hasClass('hi-timepicker__item--current')).toBeTruthy();
861
+ wrapper.find('.hi-timepicker__list-container').at(0).simulate('mouseLeave');
862
+ expect(wrapper.find('.hi-timepicker__page-turn')).toHaveLength(0); // 小时 滚动
863
+
864
+ wrapper.find('.hi-timepicker__list').at(0).simulate('scroll', {
865
+ target: {
866
+ scrollTop: 3 * 32
867
+ }
868
+ });
869
+ jest.runAllTimers();
870
+ wrapper.update();
871
+ expect(wrapper.find('.hi-timepicker__list').at(0).find("li[value=".concat(3, "]")).hasClass('hi-timepicker__item--current')).toBeTruthy(); // 滚动至大于24
872
+
873
+ wrapper.find('.hi-timepicker__list').at(0).simulate('scroll', {
874
+ target: {
875
+ scrollTop: 25 * 32
876
+ }
877
+ });
878
+ jest.runAllTimers();
879
+ wrapper.update();
880
+ expect(wrapper.find('.hi-timepicker__list').at(0).find("li[value=".concat(3, "]")).hasClass('hi-timepicker__item--current')).toBeTruthy(); // 分钟滚动
881
+
882
+ wrapper.find('.hi-timepicker__list').at(1).simulate('scroll', {
883
+ target: {
884
+ scrollTop: 20 * 32
885
+ }
886
+ });
887
+ jest.runAllTimers();
888
+ wrapper.update();
889
+ expect(wrapper.find('.hi-timepicker__list').at(1).find("li[value=".concat(20, "]")).hasClass('hi-timepicker__item--current')).toBeTruthy(); // 滚动至大于59
890
+
891
+ wrapper.find('.hi-timepicker__list').at(1).simulate('scroll', {
892
+ target: {
893
+ scrollTop: 60 * 32
894
+ }
895
+ });
896
+ jest.runAllTimers();
897
+ wrapper.update();
898
+ expect(wrapper.find('.hi-timepicker__list').at(1).find("li[value=".concat(20, "]")).hasClass('hi-timepicker__item--current')).toBeTruthy(); // 秒滚动
899
+
900
+ wrapper.find('.hi-timepicker__list').at(2).simulate('scroll', {
901
+ target: {
902
+ scrollTop: 20 * 32
903
+ }
904
+ });
905
+ jest.runAllTimers();
906
+ wrapper.update();
907
+ expect(wrapper.find('.hi-timepicker__list').at(2).find("li[value=".concat(20, "]")).hasClass('hi-timepicker__item--current')).toBeTruthy(); // 滚动至>59
908
+
909
+ wrapper.find('.hi-timepicker__list').at(2).simulate('scroll', {
910
+ target: {
911
+ scrollTop: 60 * 32
912
+ }
913
+ });
914
+ jest.runAllTimers();
915
+ wrapper.update();
916
+ expect(wrapper.find('.hi-timepicker__list').at(2).find("li[value=".concat(20, "]")).hasClass('hi-timepicker__item--current')).toBeTruthy();
917
+ });
918
+ });
919
+ describe('util', function () {
920
+ it('nextMonth', function () {
921
+ var date = (0, _util.nextMonth)('2019-11-15'); // 0-12
922
+
923
+ expect((0, _dateUtil.getMonth)(date)).toEqual(11);
924
+ });
925
+ it('deconstructDate', function () {
926
+ var date = (0, _util.deconstructDate)('2019-11-15 12:00:00'); // 0-12
927
+
928
+ expect(date).toEqual({
929
+ year: 2019,
930
+ month: 11,
931
+ day: 15,
932
+ week: 46,
933
+ hours: 12,
934
+ minutes: 0,
935
+ seconds: 0,
936
+ time: new Date('2019-11-15 12:00:00').getTime()
937
+ });
938
+ });
939
+ it('compatibleFormatString', function () {
940
+ var str = (0, _dateUtil.compatibleFormatString)('YYYY-MM-DD');
941
+ expect(str).toEqual('yyyy-MM-dd');
942
+ });
943
+ it('isVaildDate', function () {
944
+ var str = (0, _constants.isVaildDate)('');
945
+ expect(str).toBeFalsy();
946
+ str = (0, _constants.isVaildDate)(new Date());
947
+ expect(str).toBeTruthy();
948
+ str = (0, _constants.isVaildDate)({
949
+ startDate: new Date()
950
+ });
951
+ expect(str).toBeTruthy();
952
+ str = (0, _constants.isVaildDate)(new Date().getTime());
953
+ expect(str).toBeTruthy();
954
+ });
955
+ });
956
+ });