@loadsmart/loadsmart-ui 5.10.0 → 5.11.0

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 (271) hide show
  1. package/dist/common/SelectionWrapper.d.ts +1 -1
  2. package/dist/components/Accordion/Accordion.d.ts +1 -1
  3. package/dist/components/Accordion/Accordion.stories.d.ts +1 -1
  4. package/dist/components/Banner/Banner.stories.d.ts +1 -1
  5. package/dist/components/Breadcrumbs/Breadcrumbs.stories.d.ts +1 -1
  6. package/dist/components/Button/Button.stories.d.ts +1 -1
  7. package/dist/components/Calendar/Calendar.stories.d.ts +2 -7
  8. package/dist/components/Calendar/Date.helper.d.ts +47 -12
  9. package/dist/components/Card/Card.stories.d.ts +1 -1
  10. package/dist/components/Checkbox/Checkbox.d.ts +1 -1
  11. package/dist/components/Checkbox/Checkbox.stories.d.ts +1 -1
  12. package/dist/components/Dialog/Dialog.stories.d.ts +1 -1
  13. package/dist/components/DragDropFile/DragDropFile.stories.d.ts +1 -1
  14. package/dist/components/Drawer/Drawer.stories.d.ts +1 -1
  15. package/dist/components/Dropdown/Dropdown.stories.d.ts +5 -2
  16. package/dist/components/EmptyState/EmptyState.stories.d.ts +1 -1
  17. package/dist/components/ErrorMessage/ErrorMessage.stories.d.ts +1 -1
  18. package/dist/components/HighlightMatch/HighlightMatch.stories.d.ts +1 -1
  19. package/dist/components/IconFactory/IconFactory.stories.d.ts +1 -1
  20. package/dist/components/Label/Label.d.ts +2 -2
  21. package/dist/components/Label/Label.stories.d.ts +1 -1
  22. package/dist/components/Layout/Box.d.ts +1 -1
  23. package/dist/components/Layout/Grid.d.ts +1 -1
  24. package/dist/components/Layout/Layout.stories.d.ts +1 -1
  25. package/dist/components/Layout/Sidebar.d.ts +1 -1
  26. package/dist/components/Layout/Switcher.d.ts +1 -1
  27. package/dist/components/Link/Link.stories.d.ts +1 -1
  28. package/dist/components/Link/useSafeLink.d.ts +1 -1
  29. package/dist/components/Loaders/LoadingBar.stories.d.ts +2 -2
  30. package/dist/components/Loaders/LoadingDots.stories.d.ts +1 -1
  31. package/dist/components/Loaders/Spinner.stories.d.ts +1 -1
  32. package/dist/components/Modal/Modal.stories.d.ts +1 -1
  33. package/dist/components/Pagination/Pagination.stories.d.ts +1 -1
  34. package/dist/components/Pagination/Pagination.types.d.ts +2 -2
  35. package/dist/components/Popover/Popover.stories.d.ts +1 -1
  36. package/dist/components/ProgressBar/ProgressBar.stories.d.ts +1 -1
  37. package/dist/components/Radio/Radio.d.ts +1 -1
  38. package/dist/components/Radio/Radio.stories.d.ts +1 -1
  39. package/dist/components/Section/Sections.stories.d.ts +1 -1
  40. package/dist/components/Select/Select.fixtures.d.ts +1 -1
  41. package/dist/components/Select/Select.stories.d.ts +1 -1
  42. package/dist/components/Select/Select.types.d.ts +2 -2
  43. package/dist/components/Select/SelectCreatableOption.d.ts +1 -1
  44. package/dist/components/Select/SelectEmpty.d.ts +1 -1
  45. package/dist/components/Select/components.d.ts +1 -1
  46. package/dist/components/Select/useSelectExternal.d.ts +1 -1
  47. package/dist/components/SideNavigation/SideNavigation.stories.d.ts +1 -1
  48. package/dist/components/Steps/Steps.d.ts +1 -1
  49. package/dist/components/Steps/Steps.stories.d.ts +1 -1
  50. package/dist/components/Steps/StepsStep.d.ts +1 -1
  51. package/dist/components/Switch/Switch.stories.d.ts +1 -1
  52. package/dist/components/Table/Table.stories.d.ts +1 -1
  53. package/dist/components/Table/Table.types.d.ts +3 -4
  54. package/dist/components/Table/TableSortHandle.d.ts +1 -1
  55. package/dist/components/TablePagination/RowsPerPage.d.ts +1 -1
  56. package/dist/components/TablePagination/TablePagination.stories.d.ts +1 -1
  57. package/dist/components/TablePagination/TablePagination.types.d.ts +1 -1
  58. package/dist/components/TablePagination/TablePaginationActions.d.ts +1 -1
  59. package/dist/components/Tag/Tag.stories.d.ts +1 -1
  60. package/dist/components/Text/Text.d.ts +1 -1
  61. package/dist/components/Text/Text.stories.d.ts +1 -1
  62. package/dist/components/TextField/TextField.d.ts +1 -1
  63. package/dist/components/TextField/TextField.stories.d.ts +1 -1
  64. package/dist/components/Textarea/Textarea.d.ts +1 -1
  65. package/dist/components/Textarea/Textarea.stories.d.ts +1 -1
  66. package/dist/components/Toast/Toast.stories.d.ts +1 -1
  67. package/dist/components/ToggleGroup/ToggleGroup.stories.d.ts +1 -1
  68. package/dist/components/Tooltip/Tooltip.d.ts +3 -2
  69. package/dist/components/Tooltip/Tooltip.stories.d.ts +1 -1
  70. package/dist/hooks/useFocusTrap/useFocusTrap.stories.d.ts +1 -1
  71. package/dist/hooks/useHeightExpansionToggler/useHeightExpansionToggler.d.ts +1 -1
  72. package/dist/index.js +339 -491
  73. package/dist/index.js.map +1 -1
  74. package/dist/styles/activatable.d.ts +1 -1
  75. package/dist/styles/disableable.d.ts +1 -1
  76. package/dist/styles/focusable.d.ts +1 -1
  77. package/dist/styles/hoverable.d.ts +1 -1
  78. package/dist/testing/getInterpolatedStyles/getInterpolatedStyles.d.ts +1 -1
  79. package/dist/testing/index.js.map +1 -1
  80. package/dist/tests/generator.d.ts +35 -0
  81. package/dist/tests/renderer.d.ts +10 -0
  82. package/dist/theming/index.d.ts +2 -2
  83. package/dist/theming/index.js.map +1 -1
  84. package/package.json +9 -10
  85. package/src/common/CloseButton/CloseButton.tsx +7 -11
  86. package/src/common/SelectionWrapper.tsx +8 -8
  87. package/src/components/Accordion/Accordion.stories.tsx +2 -2
  88. package/src/components/Accordion/Accordion.test.tsx +2 -2
  89. package/src/components/Accordion/Accordion.tsx +24 -29
  90. package/src/components/Banner/Banner.stories.tsx +1 -1
  91. package/src/components/Banner/Banner.test.tsx +2 -2
  92. package/src/components/Banner/Banner.tsx +2 -2
  93. package/src/components/Breadcrumbs/Breadbrumbs.test.tsx +2 -2
  94. package/src/components/Breadcrumbs/Breadcrumb.tsx +3 -4
  95. package/src/components/Breadcrumbs/Breadcrumbs.stories.tsx +1 -1
  96. package/src/components/Breadcrumbs/Breadcrumbs.tsx +1 -1
  97. package/src/components/Button/Button.stories.tsx +1 -1
  98. package/src/components/Button/Button.test.tsx +2 -2
  99. package/src/components/Button/Button.tsx +17 -20
  100. package/src/components/Calendar/Calendar.stories.tsx +4 -2
  101. package/src/components/Calendar/Calendar.test.tsx +3 -3
  102. package/src/components/Calendar/Calendar.tsx +4 -8
  103. package/src/components/Calendar/Date.helper.test.ts +463 -15
  104. package/src/components/Calendar/Date.helper.ts +106 -45
  105. package/src/components/Calendar/PickerModeToggle.tsx +3 -6
  106. package/src/components/Calendar/Pickers/DayPicker.test.tsx +2 -2
  107. package/src/components/Calendar/Pickers/DayPicker.tsx +1 -1
  108. package/src/components/Calendar/Pickers/MonthPicker.test.tsx +2 -2
  109. package/src/components/Calendar/Pickers/MonthPicker.tsx +1 -1
  110. package/src/components/Calendar/Pickers/PickerButton.tsx +29 -39
  111. package/src/components/Calendar/Pickers/YearPicker.test.tsx +9 -7
  112. package/src/components/Calendar/Pickers/YearPicker.tsx +1 -1
  113. package/src/components/Card/Card.stories.tsx +2 -2
  114. package/src/components/Card/Card.test.tsx +2 -2
  115. package/src/components/Card/Card.tsx +6 -9
  116. package/src/components/Card/CardTitle.tsx +3 -3
  117. package/src/components/Checkbox/Checkbox.stories.tsx +1 -1
  118. package/src/components/Checkbox/Checkbox.test.tsx +2 -2
  119. package/src/components/Checkbox/Checkbox.tsx +15 -27
  120. package/src/components/DatePicker/DatePicker.test.tsx +2 -2
  121. package/src/components/DatePicker/DateRangePicker.stories.tsx +6 -1
  122. package/src/components/DatePicker/DateRangePicker.test.tsx +2 -2
  123. package/src/components/Dialog/Dialog.stories.tsx +1 -1
  124. package/src/components/Dialog/Dialog.test.tsx +2 -2
  125. package/src/components/Dialog/Dialog.tsx +5 -5
  126. package/src/components/DragDropFile/DragDropFile.stories.tsx +1 -1
  127. package/src/components/DragDropFile/components/DropZone.test.tsx +1 -1
  128. package/src/components/DragDropFile/styles.tsx +6 -11
  129. package/src/components/Drawer/Drawer.stories.tsx +1 -1
  130. package/src/components/Drawer/Drawer.test.tsx +1 -1
  131. package/src/components/Drawer/Drawer.tsx +6 -6
  132. package/src/components/Dropdown/Dropdown.stories.tsx +11 -6
  133. package/src/components/Dropdown/Dropdown.test.tsx +14 -16
  134. package/src/components/Dropdown/DropdownMenu.tsx +15 -28
  135. package/src/components/Dropdown/DropdownTrigger.tsx +24 -34
  136. package/src/components/EmptyState/EmptyState.stories.tsx +1 -1
  137. package/src/components/EmptyState/EmptyState.test.tsx +1 -1
  138. package/src/components/ErrorMessage/ErrorMessage.stories.tsx +1 -1
  139. package/src/components/ErrorMessage/ErrorMessage.test.tsx +1 -1
  140. package/src/components/HighlightMatch/HighlightMatch.stories.tsx +1 -1
  141. package/src/components/HighlightMatch/HighlightMatch.test.tsx +2 -2
  142. package/src/components/HighlightMatch/HighlightMatch.tsx +1 -1
  143. package/src/components/IconFactory/IconFactory.stories.tsx +1 -1
  144. package/src/components/IconFactory/IconFactory.test.tsx +2 -2
  145. package/src/components/Label/Label.stories.tsx +1 -1
  146. package/src/components/Label/Label.test.tsx +2 -2
  147. package/src/components/Label/Label.tsx +5 -5
  148. package/src/components/Layout/Box.tsx +1 -1
  149. package/src/components/Layout/Grid.tsx +1 -1
  150. package/src/components/Layout/Layout.stories.tsx +1 -1
  151. package/src/components/Layout/Sidebar.tsx +1 -1
  152. package/src/components/Layout/Switcher.tsx +1 -1
  153. package/src/components/Link/Link.stories.tsx +1 -1
  154. package/src/components/Link/Link.test.tsx +2 -2
  155. package/src/components/Link/Link.tsx +9 -13
  156. package/src/components/Link/useSafeLink.ts +1 -1
  157. package/src/components/Loaders/LoadingBar.stories.tsx +3 -3
  158. package/src/components/Loaders/LoadingBar.test.tsx +1 -1
  159. package/src/components/Loaders/LoadingBar.tsx +2 -2
  160. package/src/components/Loaders/LoadingDots.stories.tsx +1 -1
  161. package/src/components/Loaders/LoadingDots.test.tsx +1 -1
  162. package/src/components/Loaders/Spinner.stories.tsx +1 -1
  163. package/src/components/Loaders/Spinner.test.tsx +2 -2
  164. package/src/components/Modal/Modal.stories.tsx +1 -1
  165. package/src/components/Modal/Modal.test.tsx +2 -2
  166. package/src/components/Modal/Modal.tsx +7 -12
  167. package/src/components/Pagination/Pagination.stories.tsx +1 -1
  168. package/src/components/Pagination/Pagination.test.tsx +2 -2
  169. package/src/components/Pagination/Pagination.types.ts +2 -2
  170. package/src/components/Popover/Popover.stories.tsx +1 -1
  171. package/src/components/Popover/Popover.test.tsx +2 -2
  172. package/src/components/ProgressBar/ProgressBar.stories.tsx +1 -1
  173. package/src/components/ProgressBar/ProgressBar.test.tsx +1 -1
  174. package/src/components/ProgressBar/ProgressBar.tsx +4 -6
  175. package/src/components/Radio/Radio.stories.tsx +1 -1
  176. package/src/components/Radio/Radio.test.tsx +2 -2
  177. package/src/components/Radio/Radio.tsx +12 -20
  178. package/src/components/Section/Section.test.tsx +2 -2
  179. package/src/components/Section/Section.tsx +6 -8
  180. package/src/components/Section/Sections.stories.tsx +2 -2
  181. package/src/components/Select/Select.fixtures.ts +2 -2
  182. package/src/components/Select/Select.stories.tsx +3 -3
  183. package/src/components/Select/Select.test.tsx +12 -5
  184. package/src/components/Select/Select.types.ts +2 -2
  185. package/src/components/Select/SelectCreatableOption.tsx +1 -1
  186. package/src/components/Select/SelectEmpty.tsx +5 -6
  187. package/src/components/Select/SelectOption.test.tsx +1 -1
  188. package/src/components/Select/SelectTrigger.tsx +6 -11
  189. package/src/components/Select/components.tsx +1 -1
  190. package/src/components/Select/useSelect.helpers.test.ts +1 -1
  191. package/src/components/Select/useSelect.ts +1 -1
  192. package/src/components/Select/useSelectExternal.ts +1 -1
  193. package/src/components/SideNavigation/Logo/Logo.test.tsx +2 -2
  194. package/src/components/SideNavigation/Menu/Menu.test.tsx +3 -3
  195. package/src/components/SideNavigation/Menu/Menu.tsx +3 -3
  196. package/src/components/SideNavigation/Menu/MenuBaseItem.tsx +4 -5
  197. package/src/components/SideNavigation/Menu/MenuExpandable.tsx +2 -3
  198. package/src/components/SideNavigation/Separator/Separator.test.tsx +1 -1
  199. package/src/components/SideNavigation/SideNavigation.stories.tsx +1 -1
  200. package/src/components/SideNavigation/SideNavigation.test.tsx +2 -2
  201. package/src/components/Steps/ProgressSteps/ProgressStep.tsx +31 -39
  202. package/src/components/Steps/Steps.fixtures.ts +1 -1
  203. package/src/components/Steps/Steps.stories.tsx +1 -1
  204. package/src/components/Steps/Steps.test.tsx +2 -2
  205. package/src/components/Steps/Steps.tsx +2 -1
  206. package/src/components/Steps/StepsStep.tsx +2 -1
  207. package/src/components/Steps/useStep.test.tsx +1 -1
  208. package/src/components/Switch/Switch.stories.tsx +1 -1
  209. package/src/components/Switch/Switch.test.tsx +1 -1
  210. package/src/components/Switch/Switch.tsx +6 -18
  211. package/src/components/Table/Table.fixtures.ts +1 -1
  212. package/src/components/Table/Table.stories.tsx +1 -1
  213. package/src/components/Table/Table.test.tsx +1 -1
  214. package/src/components/Table/Table.tsx +2 -2
  215. package/src/components/Table/Table.types.ts +9 -4
  216. package/src/components/Table/TableSortHandle.tsx +1 -1
  217. package/src/components/TablePagination/RowsPerPage.tsx +2 -2
  218. package/src/components/TablePagination/TablePagination.stories.tsx +1 -1
  219. package/src/components/TablePagination/TablePagination.test.tsx +2 -2
  220. package/src/components/TablePagination/TablePagination.types.ts +1 -1
  221. package/src/components/TablePagination/TablePaginationActions.tsx +1 -1
  222. package/src/components/Tabs/Tabs.test.tsx +1 -1
  223. package/src/components/Tabs/Tabs.tsx +26 -32
  224. package/src/components/Tag/Tag.stories.tsx +2 -2
  225. package/src/components/Tag/Tag.test.tsx +2 -2
  226. package/src/components/Tag/Tag.tsx +35 -44
  227. package/src/components/Text/Text.stories.tsx +1 -1
  228. package/src/components/Text/Text.test.tsx +2 -2
  229. package/src/components/Text/Text.tsx +1 -1
  230. package/src/components/TextField/TextField.stories.tsx +1 -1
  231. package/src/components/TextField/TextField.test.tsx +1 -1
  232. package/src/components/TextField/TextField.tsx +16 -23
  233. package/src/components/Textarea/Textarea.stories.tsx +1 -1
  234. package/src/components/Textarea/Textarea.test.tsx +1 -1
  235. package/src/components/Textarea/Textarea.tsx +18 -23
  236. package/src/components/Toast/Toast.stories.tsx +1 -1
  237. package/src/components/Toast/Toast.test.tsx +2 -2
  238. package/src/components/Toast/Toast.tsx +3 -3
  239. package/src/components/ToggleGroup/Toggle.test.tsx +2 -2
  240. package/src/components/ToggleGroup/Toggle.tsx +7 -7
  241. package/src/components/ToggleGroup/ToggleGroup.stories.tsx +1 -1
  242. package/src/components/ToggleGroup/ToggleGroup.test.tsx +2 -2
  243. package/src/components/Tooltip/Tooltip.stories.tsx +1 -1
  244. package/src/components/Tooltip/Tooltip.test.tsx +2 -2
  245. package/src/components/Tooltip/Tooltip.tsx +23 -24
  246. package/src/components/TopNavigation/Logo/Logo.test.tsx +2 -2
  247. package/src/components/TopNavigation/Menu/Menu.test.tsx +1 -1
  248. package/src/components/TopNavigation/Menu/MenuItemDropdown.tsx +1 -1
  249. package/src/components/TopNavigation/OpenSideNavButton/OpenSideNavButton.tsx +1 -1
  250. package/src/components/VisuallyHidden/VisuallyHidden.test.tsx +1 -1
  251. package/src/hooks/useClickOutside/useClickOutside.test.tsx +1 -1
  252. package/src/hooks/useDidMount/useDidMount.test.tsx +1 -1
  253. package/src/hooks/useFocusTrap/useFocusTrap.stories.tsx +1 -1
  254. package/src/hooks/useFocusTrap/useFocusTrap.test.tsx +1 -1
  255. package/src/hooks/useFocusWithin/useFocusWithin.test.tsx +1 -1
  256. package/src/hooks/useHeightExpansionToggler/useHeightExpansionToggler.test.tsx +1 -1
  257. package/src/hooks/useHeightExpansionToggler/useHeightExpansionToggler.ts +1 -1
  258. package/src/hooks/useSelectable/SelectableStrategy.test.ts +1 -1
  259. package/src/hooks/useSelectable/useSelectable.test.ts +1 -1
  260. package/src/styles/activatable.tsx +1 -1
  261. package/src/styles/disableable.tsx +1 -1
  262. package/src/styles/focusable.tsx +1 -1
  263. package/src/styles/font.tsx +3 -3
  264. package/src/styles/hoverable.tsx +1 -1
  265. package/src/testing/SelectEvent/SelectEvent.test.tsx +2 -2
  266. package/src/testing/getInterpolatedStyles/getInterpolatedStyles.ts +1 -1
  267. package/src/tests/generator.ts +127 -0
  268. package/src/tests/renderer.tsx +39 -0
  269. package/src/theming/index.ts +3 -2
  270. package/src/tools/conditional.test.ts +1 -1
  271. package/src/utils/toolset/interleave.test.ts +1 -1
@@ -3,6 +3,7 @@ import DateHelper, {
3
3
  getConstraintRange,
4
4
  MIN_SUPPORTED_DATE,
5
5
  MAX_SUPPORTED_DATE,
6
+ getComparableDate,
6
7
  } from './Date.helper'
7
8
 
8
9
  import type { CalendarDate } from './Date.helper'
@@ -41,9 +42,21 @@ describe('DateHelper', () => {
41
42
  ['2021-11-30T20:00:00.000-03:00', '2021-11-30T12:00:00.000Z'],
42
43
  ['2021-11-30T21:00:00.000-03:00', '2021-12-01T12:00:00.000Z'],
43
44
  ['2021-11-30T01:00:00.000+03:00', '2021-11-29T12:00:00.000Z'],
45
+ ])(
46
+ 'should convert timezone date to UTC correctly (normalized dates)',
47
+ (input: string, isoDate: string) => {
48
+ expect(DateHelper(input).getTime()).toBe(new Date(isoDate).getTime())
49
+ expect(DateHelper(input).toString()).toBe(isoDate)
50
+ }
51
+ )
52
+
53
+ it.each([
54
+ ['2021-11-30T20:00:00.000-03:00', '2021-11-30T23:00:00.000Z'],
55
+ ['2021-11-30T21:00:00.000-03:00', '2021-12-01T00:00:00.000Z'],
56
+ ['2021-11-30T01:00:00.000+03:00', '2021-11-29T22:00:00.000Z'],
44
57
  ])('should convert timezone date to UTC correctly', (input: string, isoDate: string) => {
45
- expect(DateHelper(input).getTime()).toBe(new Date(isoDate).getTime())
46
- expect(DateHelper(input).toString()).toBe(isoDate)
58
+ expect(DateHelper(input, { normalize: false }).getTime()).toBe(new Date(isoDate).getTime())
59
+ expect(DateHelper(input, { normalize: false }).toString()).toBe(isoDate)
47
60
  })
48
61
 
49
62
  describe('getConstraintRange', () => {
@@ -242,10 +255,10 @@ describe('DateHelper', () => {
242
255
  it('add to year successfully', () => {
243
256
  const date = DateHelper('2001-12-25T12:00:00.000Z').add('year', 1)
244
257
 
245
- date
246
258
  expect(date.getYear()).toBe(2002)
247
259
  expect(date.getMonth()).toBe(11)
248
260
  expect(date.getDate()).toBe(25)
261
+ expect(date.toString()).toBe('2002-12-25T12:00:00.000Z')
249
262
  })
250
263
 
251
264
  it('add to month successfully', () => {
@@ -254,6 +267,7 @@ describe('DateHelper', () => {
254
267
  expect(date.getYear()).toBe(2002)
255
268
  expect(date.getMonth()).toBe(0)
256
269
  expect(date.getDate()).toBe(25)
270
+ expect(date.toString()).toBe('2002-01-25T12:00:00.000Z')
257
271
  })
258
272
 
259
273
  it('add to day successfully', () => {
@@ -262,6 +276,53 @@ describe('DateHelper', () => {
262
276
  expect(date.getYear()).toBe(2001)
263
277
  expect(date.getMonth()).toBe(11)
264
278
  expect(date.getDate()).toBe(26)
279
+ expect(date.toString()).toBe('2001-12-26T12:00:00.000Z')
280
+ })
281
+
282
+ it('add to hour successfully', () => {
283
+ const date = DateHelper('2001-12-25T18:50:10.000Z', { normalize: false }).add('hour', 1)
284
+
285
+ expect(date.getYear()).toBe(2001)
286
+ expect(date.getMonth()).toBe(11)
287
+ expect(date.getDate()).toBe(25)
288
+ expect(date.getHours()).toBe(19)
289
+ expect(date.toString()).toBe('2001-12-25T19:50:10.000Z')
290
+ })
291
+
292
+ it('add to minute successfully', () => {
293
+ const date = DateHelper('2001-12-25T23:59:00.000Z', { normalize: false }).add('minute', 1)
294
+
295
+ expect(date.getYear()).toBe(2001)
296
+ expect(date.getMonth()).toBe(11)
297
+ expect(date.getDate()).toBe(26)
298
+ expect(date.getHours()).toBe(0)
299
+ expect(date.getMinutes()).toBe(0)
300
+ expect(date.toString()).toBe('2001-12-26T00:00:00.000Z')
301
+ })
302
+
303
+ it('add to second successfully', () => {
304
+ const date = DateHelper('2001-12-25T23:59:00.000Z', { normalize: false }).add('second', 66)
305
+
306
+ expect(date.getYear()).toBe(2001)
307
+ expect(date.getMonth()).toBe(11)
308
+ expect(date.getDate()).toBe(26)
309
+ expect(date.getHours()).toBe(0)
310
+ expect(date.getMinutes()).toBe(0)
311
+ expect(date.getSeconds()).toBe(6)
312
+ expect(date.toString()).toBe('2001-12-26T00:00:06.000Z')
313
+ })
314
+
315
+ it('add to millisecond successfully', () => {
316
+ const date = DateHelper('2001-12-25T12:00:00.000Z').add('millisecond', 6500)
317
+
318
+ expect(date.getYear()).toBe(2001)
319
+ expect(date.getMonth()).toBe(11)
320
+ expect(date.getDate()).toBe(25)
321
+ expect(date.getHours()).toBe(12)
322
+ expect(date.getMinutes()).toBe(0)
323
+ expect(date.getSeconds()).toBe(6)
324
+ expect(date.getMilliseconds()).toBe(500)
325
+ expect(date.toString()).toBe('2001-12-25T12:00:06.500Z')
265
326
  })
266
327
  })
267
328
 
@@ -289,6 +350,52 @@ describe('DateHelper', () => {
289
350
  expect(date.getMonth()).toBe(11)
290
351
  expect(date.getDate()).toBe(24)
291
352
  })
353
+
354
+ it('subtract from hour successfully', () => {
355
+ const date = DateHelper('2001-12-25T12:00:00.000Z').subtract('hour', 1)
356
+
357
+ expect(date.getYear()).toBe(2001)
358
+ expect(date.getMonth()).toBe(11)
359
+ expect(date.getDate()).toBe(25)
360
+ expect(date.getHours()).toBe(11)
361
+ expect(date.getMinutes()).toBe(0)
362
+ expect(date.getSeconds()).toBe(0)
363
+ })
364
+
365
+ it('subtract from minute successfully', () => {
366
+ const date = DateHelper('2001-12-25T12:00:00.000Z').subtract('minute', 1)
367
+
368
+ expect(date.getYear()).toBe(2001)
369
+ expect(date.getMonth()).toBe(11)
370
+ expect(date.getDate()).toBe(25)
371
+ expect(date.getHours()).toBe(11)
372
+ expect(date.getMinutes()).toBe(59)
373
+ expect(date.getSeconds()).toBe(0)
374
+ })
375
+
376
+ it('subtract from second successfully', () => {
377
+ const date = DateHelper('2001-12-25T12:00:00.000Z').subtract('second', 1)
378
+
379
+ expect(date.getYear()).toBe(2001)
380
+ expect(date.getMonth()).toBe(11)
381
+ expect(date.getDate()).toBe(25)
382
+ expect(date.getHours()).toBe(11)
383
+ expect(date.getMinutes()).toBe(59)
384
+ expect(date.getSeconds()).toBe(59)
385
+ expect(date.getMilliseconds()).toBe(0)
386
+ })
387
+
388
+ it('subtract from millisecond successfully', () => {
389
+ const date = DateHelper('2001-12-25T12:00:00.000Z').subtract('millisecond', 1)
390
+
391
+ expect(date.getYear()).toBe(2001)
392
+ expect(date.getMonth()).toBe(11)
393
+ expect(date.getDate()).toBe(25)
394
+ expect(date.getHours()).toBe(11)
395
+ expect(date.getMinutes()).toBe(59)
396
+ expect(date.getSeconds()).toBe(59)
397
+ expect(date.getMilliseconds()).toBe(999)
398
+ })
292
399
  })
293
400
 
294
401
  describe('set', () => {
@@ -315,10 +422,107 @@ describe('DateHelper', () => {
315
422
  expect(date.getMonth()).toBe(11)
316
423
  expect(date.getDate()).toBe(5)
317
424
  })
425
+
426
+ it('set hour successfully', () => {
427
+ const date = DateHelper('2001-12-25T12:00:00.000Z').set('hour', 1)
428
+
429
+ expect(date.getYear()).toBe(2001)
430
+ expect(date.getMonth()).toBe(11)
431
+ expect(date.getDate()).toBe(25)
432
+ expect(date.getHours()).toBe(1)
433
+ expect(date.getMinutes()).toBe(0)
434
+ expect(date.getSeconds()).toBe(0)
435
+ expect(date.toString()).toBe('2001-12-25T01:00:00.000Z')
436
+ })
437
+
438
+ it('set from minute successfully', () => {
439
+ const date = DateHelper('2001-12-25T12:00:00.000Z').set('minute', 1)
440
+
441
+ expect(date.getYear()).toBe(2001)
442
+ expect(date.getMonth()).toBe(11)
443
+ expect(date.getDate()).toBe(25)
444
+ expect(date.getHours()).toBe(12)
445
+ expect(date.getMinutes()).toBe(1)
446
+ expect(date.getSeconds()).toBe(0)
447
+ expect(date.toString()).toBe('2001-12-25T12:01:00.000Z')
448
+ })
449
+
450
+ it('set from second successfully', () => {
451
+ const date = DateHelper('2001-12-25T12:00:00.000Z').set('second', 1)
452
+
453
+ expect(date.getYear()).toBe(2001)
454
+ expect(date.getMonth()).toBe(11)
455
+ expect(date.getDate()).toBe(25)
456
+ expect(date.getHours()).toBe(12)
457
+ expect(date.getMinutes()).toBe(0)
458
+ expect(date.getSeconds()).toBe(1)
459
+ expect(date.toString()).toBe('2001-12-25T12:00:01.000Z')
460
+ })
461
+
462
+ it('set millisecond successfully', () => {
463
+ const date = DateHelper('2001-12-25T12:00:00.000Z').set('millisecond', 1)
464
+
465
+ expect(date.getYear()).toBe(2001)
466
+ expect(date.getMonth()).toBe(11)
467
+ expect(date.getDate()).toBe(25)
468
+ expect(date.getHours()).toBe(12)
469
+ expect(date.getMinutes()).toBe(0)
470
+ expect(date.getSeconds()).toBe(0)
471
+ expect(date.getMilliseconds()).toBe(1)
472
+ expect(date.toString()).toBe('2001-12-25T12:00:00.001Z')
473
+ })
318
474
  })
319
475
 
320
476
  describe('comparison', () => {
321
477
  it.each([
478
+ ['2000-12-24T12:00:00.000Z', '2000-12-24T12:00:00.001Z', 'millisecond', true],
479
+ ['2000-12-24T12:00:00.000Z', '2000-12-24T12:00:00.000Z', 'millisecond', true],
480
+ ['2000-12-24T12:00:00.001Z', '2000-12-24T12:00:00.000Z', 'millisecond', true],
481
+
482
+ ['2000-12-24T12:00:00', '2000-12-24T12:00:01', 'second', true],
483
+ ['2000-12-24T12:00:00', '2000-12-24T12:00:00', 'second', true],
484
+ ['2000-12-24T12:00:01', '2000-12-24T12:00:00', 'second', true],
485
+
486
+ ['2000-12-24T12:00:00', '2000-12-24T12:01:00', 'minute', true],
487
+ ['2000-12-24T12:00:00', '2000-12-24T12:00:00', 'minute', true],
488
+ ['2000-12-24T12:01:00', '2000-12-24T12:00:00', 'minute', true],
489
+
490
+ ['2000-12-24T12:00:00', '2000-12-24T13:00:00', 'hour', true],
491
+ ['2000-12-24T12:00:00', '2000-12-24T12:00:00', 'hour', true],
492
+ ['2000-12-24T12:00:00', '2000-12-24T11:00:00', 'hour', true],
493
+
494
+ ['2000-12-24T12:00:00', '2000-12-26T12:00:00', 'day', true],
495
+ ['2000-12-25T12:00:00', '2000-12-25T12:00:00', 'day', true],
496
+ ['2000-12-26T12:00:00', '2000-12-24T12:00:00', 'day', false],
497
+
498
+ ['2000-11-25T12:00:00', '2001-01-25T12:00:00', 'month', true],
499
+ ['2000-12-25T12:00:00', '2000-12-25T12:00:00', 'month', true],
500
+ ['2001-01-25T12:00:00', '2000-11-25T12:00:00', 'month', false],
501
+
502
+ ['1999-12-25T12:00:00', '2001-12-25T12:00:00', 'year', true],
503
+ ['2000-12-25T12:00:00', '2000-12-25T12:00:00', 'year', true],
504
+ ['2001-12-25T12:00:00', '1999-12-25T12:00:00', 'year', false],
505
+ ])('compares for less than or equal (normalized dates)', (a, b, precision, expected) => {
506
+ expect(DateHelper(a).is('<=', DateHelper(b), precision)).toBe(expected)
507
+ })
508
+
509
+ it.each([
510
+ ['2000-12-24T12:00:00.000Z', '2000-12-24T12:00:00.001Z', 'millisecond', true],
511
+ ['2000-12-24T12:00:00.000Z', '2000-12-24T12:00:00.000Z', 'millisecond', true],
512
+ ['2000-12-24T12:00:00.001Z', '2000-12-24T12:00:00.000Z', 'millisecond', false],
513
+
514
+ ['2000-12-24T12:00:00', '2000-12-24T12:00:01', 'second', true],
515
+ ['2000-12-24T12:00:00', '2000-12-24T12:00:00', 'second', true],
516
+ ['2000-12-24T12:00:01', '2000-12-24T12:00:00', 'second', false],
517
+
518
+ ['2000-12-24T12:00:00', '2000-12-24T12:01:00', 'minute', true],
519
+ ['2000-12-24T12:00:00', '2000-12-24T12:00:00', 'minute', true],
520
+ ['2000-12-24T12:01:00', '2000-12-24T12:00:00', 'minute', false],
521
+
522
+ ['2000-12-24T12:00:00', '2000-12-24T13:00:00', 'hour', true],
523
+ ['2000-12-24T12:00:00', '2000-12-24T12:00:00', 'hour', true],
524
+ ['2000-12-24T12:00:00', '2000-12-24T11:00:00', 'hour', false],
525
+
322
526
  ['2000-12-24T12:00:00', '2000-12-26T12:00:00', 'day', true],
323
527
  ['2000-12-25T12:00:00', '2000-12-25T12:00:00', 'day', true],
324
528
  ['2000-12-26T12:00:00', '2000-12-24T12:00:00', 'day', false],
@@ -331,10 +535,60 @@ describe('DateHelper', () => {
331
535
  ['2000-12-25T12:00:00', '2000-12-25T12:00:00', 'year', true],
332
536
  ['2001-12-25T12:00:00', '1999-12-25T12:00:00', 'year', false],
333
537
  ])('compares for less than or equal', (a, b, precision, expected) => {
334
- expect(DateHelper(a).is('<=', DateHelper(b), precision)).toBe(expected)
538
+ expect(
539
+ DateHelper(a, { normalize: false }).is('<=', DateHelper(b, { normalize: false }), precision)
540
+ ).toBe(expected)
541
+ })
542
+
543
+ it.each([
544
+ ['2000-12-24T12:00:00.000Z', '2000-12-24T12:00:00.001Z', 'millisecond', false],
545
+ ['2000-12-24T12:00:00.000Z', '2000-12-24T12:00:00.000Z', 'millisecond', false],
546
+ ['2000-12-24T12:00:00.001Z', '2000-12-24T12:00:00.000Z', 'millisecond', false],
547
+
548
+ ['2000-12-24T12:00:00', '2000-12-24T12:00:01', 'second', false],
549
+ ['2000-12-24T12:00:00', '2000-12-24T12:00:00', 'second', false],
550
+ ['2000-12-24T12:00:01', '2000-12-24T12:00:00', 'second', false],
551
+
552
+ ['2000-12-24T12:00:00', '2000-12-24T12:01:00', 'minute', false],
553
+ ['2000-12-24T12:00:00', '2000-12-24T12:00:00', 'minute', false],
554
+ ['2000-12-24T12:01:00', '2000-12-24T12:00:00', 'minute', false],
555
+
556
+ ['2000-12-24T12:00:00', '2000-12-24T13:00:00', 'hour', false],
557
+ ['2000-12-24T12:00:00', '2000-12-24T12:00:00', 'hour', false],
558
+ ['2000-12-24T12:00:00', '2000-12-24T11:00:00', 'hour', false],
559
+
560
+ ['2000-12-24T12:00:00', '2000-12-26T12:00:00', 'day', true],
561
+ ['2000-12-25T12:00:00', '2000-12-25T12:00:00', 'day', false],
562
+ ['2000-12-26T12:00:00', '2000-12-24T12:00:00', 'day', false],
563
+
564
+ ['2000-11-25T12:00:00', '2001-01-25T12:00:00', 'month', true],
565
+ ['2000-12-25T12:00:00', '2000-12-25T12:00:00', 'month', false],
566
+ ['2001-01-25T12:00:00', '2000-11-25T12:00:00', 'month', false],
567
+
568
+ ['1999-12-25T12:00:00', '2001-12-25T12:00:00', 'year', true],
569
+ ['2000-12-25T12:00:00', '2000-12-25T12:00:00', 'year', false],
570
+ ['2001-12-25T12:00:00', '1999-12-25T12:00:00', 'year', false],
571
+ ])('compares for less than (normalized dates)', (a, b, precision, expected) => {
572
+ expect(DateHelper(a).is('<', DateHelper(b), precision)).toBe(expected)
335
573
  })
336
574
 
337
575
  it.each([
576
+ ['2000-12-24T12:00:00.000Z', '2000-12-24T12:00:00.001Z', 'millisecond', true],
577
+ ['2000-12-24T12:00:00.000Z', '2000-12-24T12:00:00.000Z', 'millisecond', false],
578
+ ['2000-12-24T12:00:00.001Z', '2000-12-24T12:00:00.000Z', 'millisecond', false],
579
+
580
+ ['2000-12-24T12:00:00', '2000-12-24T12:00:01', 'second', true],
581
+ ['2000-12-24T12:00:00', '2000-12-24T12:00:00', 'second', false],
582
+ ['2000-12-24T12:00:01', '2000-12-24T12:00:00', 'second', false],
583
+
584
+ ['2000-12-24T12:00:00', '2000-12-24T12:01:00', 'minute', true],
585
+ ['2000-12-24T12:00:00', '2000-12-24T12:00:00', 'minute', false],
586
+ ['2000-12-24T12:01:00', '2000-12-24T12:00:00', 'minute', false],
587
+
588
+ ['2000-12-24T12:00:00', '2000-12-24T13:00:00', 'hour', true],
589
+ ['2000-12-24T12:00:00', '2000-12-24T12:00:00', 'hour', false],
590
+ ['2000-12-24T12:00:00', '2000-12-24T11:00:00', 'hour', false],
591
+
338
592
  ['2000-12-24T12:00:00', '2000-12-26T12:00:00', 'day', true],
339
593
  ['2000-12-25T12:00:00', '2000-12-25T12:00:00', 'day', false],
340
594
  ['2000-12-26T12:00:00', '2000-12-24T12:00:00', 'day', false],
@@ -347,27 +601,128 @@ describe('DateHelper', () => {
347
601
  ['2000-12-25T12:00:00', '2000-12-25T12:00:00', 'year', false],
348
602
  ['2001-12-25T12:00:00', '1999-12-25T12:00:00', 'year', false],
349
603
  ])('compares for less than', (a, b, precision, expected) => {
350
- expect(DateHelper(new Date(a)).is('<', DateHelper(b), precision)).toBe(expected)
604
+ expect(
605
+ DateHelper(a, { normalize: false }).is('<', DateHelper(b, { normalize: false }), precision)
606
+ ).toBe(expected)
351
607
  })
352
608
 
353
609
  it.each([
610
+ ['2000-12-24T12:00:00.000Z', '2000-12-24T12:00:00.001Z', 'millisecond', true],
611
+ ['2000-12-24T12:00:00.000Z', '2000-12-24T12:00:00.000Z', 'millisecond', true],
612
+ ['2000-12-24T12:00:00.001Z', '2000-12-24T12:00:00.000Z', 'millisecond', true],
613
+
614
+ ['2000-12-24T12:00:00', '2000-12-24T12:00:01', 'second', true],
615
+ ['2000-12-24T12:00:00', '2000-12-24T12:00:00', 'second', true],
616
+ ['2000-12-24T12:00:01', '2000-12-24T12:00:00', 'second', true],
617
+
618
+ ['2000-12-24T12:00:00', '2000-12-24T12:01:00', 'minute', true],
619
+ ['2000-12-24T12:00:00', '2000-12-24T12:00:00', 'minute', true],
620
+ ['2000-12-24T12:01:00', '2000-12-24T12:00:00', 'minute', true],
621
+
622
+ ['2000-12-24T12:00:00', '2000-12-24T13:00:00', 'hour', true],
623
+ ['2000-12-24T12:00:00', '2000-12-24T12:00:00', 'hour', true],
624
+ ['2000-12-24T12:00:00', '2000-12-24T11:00:00', 'hour', true],
625
+
354
626
  ['2000-12-25T22:17:12.000Z', '2000-12-25T15:16:00.000Z', 'day', true],
355
627
  ['2000-12-24T12:00:00', '2000-12-26T12:00:00', 'day', false],
356
- ['2000-12-25T12:00:00', '2000-12-25T12:00:00', 'day', true],
628
+ ['2000-12-25T12:00:00', '2000-12-25T15:00:00', 'day', true],
357
629
  ['2000-12-26T12:00:00', '2000-12-24T12:00:00', 'day', false],
358
630
 
359
631
  ['2000-11-25T12:00:00', '2001-01-25T12:00:00', 'month', false],
360
- ['2000-12-25T12:00:00', '2000-12-25T12:00:00', 'month', true],
361
- ['2001-01-25T12:00:00', '2000-11-25T12:00:00', 'month', false],
632
+ ['2000-12-25T12:00:00', '2000-12-24T12:00:00', 'month', true],
633
+ ['2001-01-25T12:00:00', '2001-02-25T12:00:00', 'month', false],
362
634
 
363
635
  ['1999-12-25T12:00:00', '2001-12-25T12:00:00', 'year', false],
364
- ['2000-12-25T12:00:00', '2000-12-25T12:00:00', 'year', true],
636
+ ['2000-12-25T12:00:00', '2000-11-25T12:00:00', 'year', true],
365
637
  ['2001-12-25T12:00:00', '1999-12-25T12:00:00', 'year', false],
366
- ])('compares for less than or equal', (a, b, precision, expected) => {
367
- expect(DateHelper(new Date(a)).is('=', DateHelper(b), precision)).toBe(expected)
638
+ ])('compares for equal (normalized dates)', (a, b, precision, expected) => {
639
+ expect(DateHelper(a).is('=', DateHelper(b), precision)).toBe(expected)
640
+ })
641
+
642
+ it.each([
643
+ ['2000-12-24T12:00:00.000Z', '2000-12-24T12:00:00.001Z', 'millisecond', false],
644
+ ['2000-12-24T12:00:00.000Z', '2000-12-24T12:00:00.000Z', 'millisecond', true],
645
+ ['2000-12-24T12:00:00.001Z', '2000-12-24T12:00:00.000Z', 'millisecond', false],
646
+
647
+ ['2000-12-24T12:00:00', '2000-12-24T12:00:01', 'second', false],
648
+ ['2000-12-24T12:00:00', '2000-12-24T12:00:00', 'second', true],
649
+ ['2000-12-24T12:00:01', '2000-12-24T12:00:00', 'second', false],
650
+
651
+ ['2000-12-24T12:00:00', '2000-12-24T12:01:00', 'minute', false],
652
+ ['2000-12-24T12:00:00', '2000-12-24T12:00:00', 'minute', true],
653
+ ['2000-12-24T12:01:00', '2000-12-24T12:00:00', 'minute', false],
654
+
655
+ ['2000-12-24T12:00:00', '2000-12-24T13:00:00', 'hour', false],
656
+ ['2000-12-24T12:00:00', '2000-12-24T12:00:00', 'hour', true],
657
+ ['2000-12-24T12:00:00', '2000-12-24T11:00:00', 'hour', false],
658
+
659
+ ['2000-12-25T22:17:12.000Z', '2000-12-25T15:16:00.000Z', 'day', true],
660
+ ['2000-12-24T12:00:00', '2000-12-26T12:00:00', 'day', false],
661
+ ['2000-12-25T12:00:00', '2000-12-25T15:00:00', 'day', true],
662
+ ['2000-12-26T12:00:00', '2000-12-24T12:00:00', 'day', false],
663
+
664
+ ['2000-11-25T12:00:00', '2001-01-25T12:00:00', 'month', false],
665
+ ['2000-12-25T12:00:00', '2000-12-24T12:00:00', 'month', true],
666
+ ['2001-01-25T12:00:00', '2001-02-25T12:00:00', 'month', false],
667
+
668
+ ['1999-12-25T12:00:00', '2001-12-25T12:00:00', 'year', false],
669
+ ['2000-12-25T12:00:00', '2000-11-25T12:00:00', 'year', true],
670
+ ['2001-12-25T12:00:00', '1999-12-25T12:00:00', 'year', false],
671
+ ])('compares for equal', (a, b, precision, expected) => {
672
+ expect(
673
+ DateHelper(a, { normalize: false }).is('=', DateHelper(b, { normalize: false }), precision)
674
+ ).toBe(expected)
368
675
  })
369
676
 
370
677
  it.each([
678
+ ['2000-12-24T12:00:00.000Z', '2000-12-24T12:00:00.001Z', 'millisecond', false],
679
+ ['2000-12-24T12:00:00.000Z', '2000-12-24T12:00:00.000Z', 'millisecond', false],
680
+ ['2000-12-24T12:00:00.001Z', '2000-12-24T12:00:00.000Z', 'millisecond', false],
681
+
682
+ ['2000-12-24T12:00:00', '2000-12-24T12:00:01', 'second', false],
683
+ ['2000-12-24T12:00:00', '2000-12-24T12:00:00', 'second', false],
684
+ ['2000-12-24T12:00:01', '2000-12-24T12:00:00', 'second', false],
685
+
686
+ ['2000-12-24T12:00:00', '2000-12-24T12:01:00', 'minute', false],
687
+ ['2000-12-24T12:00:00', '2000-12-24T12:00:00', 'minute', false],
688
+ ['2000-12-24T12:01:00', '2000-12-24T12:00:00', 'minute', false],
689
+
690
+ ['2000-12-24T12:00:00', '2000-12-24T13:00:00', 'hour', false],
691
+ ['2000-12-24T12:00:00', '2000-12-24T12:00:00', 'hour', false],
692
+ ['2000-12-24T12:00:00', '2000-12-24T11:00:00', 'hour', false],
693
+
694
+ ['2000-12-24T12:00:00', '2000-12-26T12:00:00', 'day', false],
695
+ ['2000-12-25T12:00:00', '2000-12-25T12:00:00', 'day', false],
696
+ ['2000-12-26T12:00:00', '2000-12-24T12:00:00', 'day', true],
697
+
698
+ ['2000-11-25T12:00:00', '2001-01-25T12:00:00', 'month', false],
699
+ ['2000-12-25T12:00:00', '2000-12-25T12:00:00', 'month', false],
700
+ ['2001-01-25T12:00:00', '2000-11-25T12:00:00', 'month', true],
701
+
702
+ ['1999-12-25T12:00:00', '2001-12-25T12:00:00', 'year', false],
703
+ ['2000-12-25T12:00:00', '2000-12-24T12:00:00', 'year', false],
704
+ ['2001-12-25T12:00:00', '1999-12-25T12:00:00', 'year', true],
705
+ ])('compares for greater than (normalized dates)', (a, b, precision, expected) => {
706
+ expect(DateHelper(a).is('>', DateHelper(b), precision)).toBe(expected)
707
+ })
708
+
709
+ it.each([
710
+ ['2000-12-24T12:00:00.000Z', '2000-12-24T12:00:00.001Z', 'millisecond', false],
711
+ ['2000-12-24T12:00:00.000Z', '2000-12-24T12:00:00.000Z', 'millisecond', false],
712
+ ['2000-12-24T12:00:00.001Z', '2000-12-24T12:00:00.000Z', 'millisecond', true],
713
+
714
+ ['2000-12-24T12:00:00', '2000-12-24T12:00:01', 'second', false],
715
+ ['2000-12-24T12:00:00', '2000-12-24T12:00:00', 'second', false],
716
+ ['2000-12-24T12:00:01', '2000-12-24T12:00:00', 'second', true],
717
+
718
+ ['2000-12-24T12:00:00', '2000-12-24T12:01:00', 'minute', false],
719
+ ['2000-12-24T12:00:00', '2000-12-24T12:00:00', 'minute', false],
720
+ ['2000-12-24T12:01:00', '2000-12-24T12:00:00', 'minute', true],
721
+
722
+ ['2000-12-24T12:00:00', '2000-12-24T13:00:00', 'hour', false],
723
+ ['2000-12-24T12:00:00', '2000-12-24T12:00:00', 'hour', false],
724
+ ['2000-12-24T12:00:00', '2000-12-24T11:00:00', 'hour', true],
725
+
371
726
  ['2000-12-24T12:00:00', '2000-12-26T12:00:00', 'day', false],
372
727
  ['2000-12-25T12:00:00', '2000-12-25T12:00:00', 'day', false],
373
728
  ['2000-12-26T12:00:00', '2000-12-24T12:00:00', 'day', true],
@@ -379,11 +734,29 @@ describe('DateHelper', () => {
379
734
  ['1999-12-25T12:00:00', '2001-12-25T12:00:00', 'year', false],
380
735
  ['2000-12-25T12:00:00', '2000-12-25T12:00:00', 'year', false],
381
736
  ['2001-12-25T12:00:00', '1999-12-25T12:00:00', 'year', true],
382
- ])('compares for less than or equal', (a, b, precision, expected) => {
383
- expect(DateHelper(new Date(a)).is('>', DateHelper(b), precision)).toBe(expected)
737
+ ])('compares for greater than', (a, b, precision, expected) => {
738
+ expect(
739
+ DateHelper(a, { normalize: false }).is('>', DateHelper(b, { normalize: false }), precision)
740
+ ).toBe(expected)
384
741
  })
385
742
 
386
743
  it.each([
744
+ ['2000-12-24T12:00:00.000Z', '2000-12-24T12:00:00.001Z', 'millisecond', true],
745
+ ['2000-12-24T12:00:00.000Z', '2000-12-24T12:00:00.000Z', 'millisecond', true],
746
+ ['2000-12-24T12:00:00.001Z', '2000-12-24T12:00:00.000Z', 'millisecond', true],
747
+
748
+ ['2000-12-24T12:00:00', '2000-12-24T12:00:01', 'second', true],
749
+ ['2000-12-24T12:00:00', '2000-12-24T12:00:00', 'second', true],
750
+ ['2000-12-24T12:00:01', '2000-12-24T12:00:00', 'second', true],
751
+
752
+ ['2000-12-24T12:00:00', '2000-12-24T12:01:00', 'minute', true],
753
+ ['2000-12-24T12:00:00', '2000-12-24T12:00:00', 'minute', true],
754
+ ['2000-12-24T12:01:00', '2000-12-24T12:00:00', 'minute', true],
755
+
756
+ ['2000-12-24T12:00:00', '2000-12-24T13:00:00', 'hour', true],
757
+ ['2000-12-24T12:00:00', '2000-12-24T12:00:00', 'hour', true],
758
+ ['2000-12-24T12:00:00', '2000-12-24T11:00:00', 'hour', true],
759
+
387
760
  ['2000-12-24T12:00:00', '2000-12-26T12:00:00', 'day', false],
388
761
  ['2000-12-25T12:00:00', '2000-12-25T12:00:00', 'day', true],
389
762
  ['2000-12-26T12:00:00', '2000-12-24T12:00:00', 'day', true],
@@ -395,8 +768,83 @@ describe('DateHelper', () => {
395
768
  ['1999-12-25T12:00:00', '2001-12-25T12:00:00', 'year', false],
396
769
  ['2000-12-25T12:00:00', '2000-12-25T12:00:00', 'year', true],
397
770
  ['2001-12-25T12:00:00', '1999-12-25T12:00:00', 'year', true],
398
- ])('compares for less than or equal', (a, b, precision, expected) => {
399
- expect(DateHelper(new Date(a)).is('>=', DateHelper(b), precision)).toBe(expected)
771
+ ])('compares for greater than or equal (normalized dates)', (a, b, precision, expected) => {
772
+ expect(DateHelper(a).is('>=', DateHelper(b), precision)).toBe(expected)
773
+ })
774
+
775
+ it.each([
776
+ ['2000-12-24T12:00:00.000Z', '2000-12-24T12:00:00.001Z', 'millisecond', false],
777
+ ['2000-12-24T12:00:00.000Z', '2000-12-24T12:00:00.000Z', 'millisecond', true],
778
+ ['2000-12-24T12:00:00.001Z', '2000-12-24T12:00:00.000Z', 'millisecond', true],
779
+
780
+ ['2000-12-24T12:00:00', '2000-12-24T12:00:01', 'second', false],
781
+ ['2000-12-24T12:00:00', '2000-12-24T12:00:00', 'second', true],
782
+ ['2000-12-24T12:00:01', '2000-12-24T12:00:00', 'second', true],
783
+
784
+ ['2000-12-24T12:00:00', '2000-12-24T12:01:00', 'minute', false],
785
+ ['2000-12-24T12:00:00', '2000-12-24T12:00:00', 'minute', true],
786
+ ['2000-12-24T12:01:00', '2000-12-24T12:00:00', 'minute', true],
787
+
788
+ ['2000-12-24T12:00:00', '2000-12-24T13:00:00', 'hour', false],
789
+ ['2000-12-24T12:00:00', '2000-12-24T12:00:00', 'hour', true],
790
+ ['2000-12-24T12:00:00', '2000-12-24T11:00:00', 'hour', true],
791
+
792
+ ['2000-12-24T12:00:00', '2000-12-26T12:00:00', 'day', false],
793
+ ['2000-12-25T12:00:00', '2000-12-25T12:00:00', 'day', true],
794
+ ['2000-12-26T12:00:00', '2000-12-24T12:00:00', 'day', true],
795
+
796
+ ['2000-11-25T12:00:00', '2001-01-25T12:00:00', 'month', false],
797
+ ['2000-12-25T12:00:00', '2000-12-25T12:00:00', 'month', true],
798
+ ['2001-01-25T12:00:00', '2000-11-25T12:00:00', 'month', true],
799
+
800
+ ['1999-12-25T12:00:00', '2001-12-25T12:00:00', 'year', false],
801
+ ['2000-12-25T12:00:00', '2000-12-25T12:00:00', 'year', true],
802
+ ['2001-12-25T12:00:00', '1999-12-25T12:00:00', 'year', true],
803
+ ])('compares for greater than or equal', (a, b, precision, expected) => {
804
+ expect(
805
+ DateHelper(a, { normalize: false }).is('>=', DateHelper(b, { normalize: false }), precision)
806
+ ).toBe(expected)
807
+ })
808
+ })
809
+
810
+ describe('getComparableDate', () => {
811
+ it('return the comparable date based on the given precision', () => {
812
+ expect(getComparableDate(new Date('1969-12-31T23:59:59.990Z'), 'millisecond')).toBe(-10)
813
+ expect(getComparableDate(new Date('1970-01-01T00:00:00.000Z'), 'millisecond')).toBe(0)
814
+ expect(getComparableDate(new Date('1970-01-01T00:00:00.001Z'), 'millisecond')).toBe(1)
815
+ expect(getComparableDate(new Date('1969-12-31T23:59:59.990Z'), 'year')).toBe(
816
+ new Date('1969-01-01T00:00:00.000Z').getTime()
817
+ )
818
+ expect(getComparableDate(new Date('2022-10-13T17:42:19.948Z'), 'year')).toBe(
819
+ new Date('2022-01-01T00:00:00.000Z').getTime()
820
+ )
821
+ expect(getComparableDate(new Date('2022-10-13T17:42:19.948Z'), 'month')).toBe(
822
+ new Date('2022-10-01T00:00:00.000Z').getTime()
823
+ )
824
+ expect(getComparableDate(new Date('2022-10-13T17:42:19.948Z'), 'day')).toBe(
825
+ new Date('2022-10-13T00:00:00.000Z').getTime()
826
+ )
827
+ expect(getComparableDate(new Date('2022-10-13T17:42:19.948Z'), 'hour')).toBe(
828
+ new Date('2022-10-13T17:00:00.000Z').getTime()
829
+ )
830
+ expect(getComparableDate(new Date('2022-10-13T17:42:19.948Z'), 'minute')).toBe(
831
+ new Date('2022-10-13T17:42:00.000Z').getTime()
832
+ )
833
+ expect(getComparableDate(new Date('2022-10-13T17:42:19.948Z'), 'second')).toBe(
834
+ new Date('2022-10-13T17:42:19.000Z').getTime()
835
+ )
836
+ expect(getComparableDate(new Date('2022-10-13T17:42:19.948Z'), 'millisecond')).toBe(
837
+ new Date('2022-10-13T17:42:19.948Z').getTime()
838
+ )
839
+ expect(() =>
840
+ getComparableDate(new Date('2022-10-13T17:42:19.948Z'), 'foo' as 'day')
841
+ ).toThrowError(new Error('precision foo is not supported'))
842
+ })
843
+
844
+ it('uses "day" as the default precision', () => {
845
+ expect(getComparableDate(new Date('2022-10-13T17:42:19.948Z'))).toBe(
846
+ new Date('2022-10-13T00:00:00.000Z').getTime()
847
+ )
400
848
  })
401
849
  })
402
850
  })