@loadsmart/loadsmart-ui 5.10.1 → 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 (89) hide show
  1. package/dist/components/Calendar/Calendar.stories.d.ts +2 -7
  2. package/dist/components/Calendar/Date.helper.d.ts +47 -12
  3. package/dist/components/Dropdown/Dropdown.stories.d.ts +4 -1
  4. package/dist/components/Loaders/LoadingBar.stories.d.ts +1 -1
  5. package/dist/index.js +64 -64
  6. package/dist/index.js.map +1 -1
  7. package/dist/tests/generator.d.ts +35 -0
  8. package/dist/tests/renderer.d.ts +10 -0
  9. package/package.json +1 -1
  10. package/src/components/Accordion/Accordion.stories.tsx +1 -1
  11. package/src/components/Accordion/Accordion.test.tsx +2 -2
  12. package/src/components/Banner/Banner.test.tsx +2 -2
  13. package/src/components/Breadcrumbs/Breadbrumbs.test.tsx +2 -2
  14. package/src/components/Button/Button.test.tsx +2 -2
  15. package/src/components/Calendar/Calendar.stories.tsx +4 -2
  16. package/src/components/Calendar/Calendar.test.tsx +3 -3
  17. package/src/components/Calendar/Date.helper.test.ts +463 -15
  18. package/src/components/Calendar/Date.helper.ts +106 -45
  19. package/src/components/Calendar/Pickers/DayPicker.test.tsx +2 -2
  20. package/src/components/Calendar/Pickers/MonthPicker.test.tsx +2 -2
  21. package/src/components/Calendar/Pickers/YearPicker.test.tsx +9 -7
  22. package/src/components/Card/Card.stories.tsx +1 -1
  23. package/src/components/Card/Card.test.tsx +2 -2
  24. package/src/components/Checkbox/Checkbox.test.tsx +2 -2
  25. package/src/components/DatePicker/DatePicker.test.tsx +2 -2
  26. package/src/components/DatePicker/DateRangePicker.stories.tsx +6 -1
  27. package/src/components/DatePicker/DateRangePicker.test.tsx +2 -2
  28. package/src/components/Dialog/Dialog.test.tsx +2 -2
  29. package/src/components/DragDropFile/components/DropZone.test.tsx +1 -1
  30. package/src/components/Drawer/Drawer.test.tsx +1 -1
  31. package/src/components/Dropdown/Dropdown.stories.tsx +10 -5
  32. package/src/components/Dropdown/Dropdown.test.tsx +14 -16
  33. package/src/components/EmptyState/EmptyState.test.tsx +1 -1
  34. package/src/components/ErrorMessage/ErrorMessage.test.tsx +1 -1
  35. package/src/components/HighlightMatch/HighlightMatch.test.tsx +1 -1
  36. package/src/components/IconFactory/IconFactory.test.tsx +2 -2
  37. package/src/components/Label/Label.test.tsx +2 -2
  38. package/src/components/Link/Link.test.tsx +2 -2
  39. package/src/components/Loaders/LoadingBar.stories.tsx +2 -2
  40. package/src/components/Loaders/LoadingBar.test.tsx +1 -1
  41. package/src/components/Loaders/LoadingDots.test.tsx +1 -1
  42. package/src/components/Loaders/Spinner.test.tsx +2 -2
  43. package/src/components/Modal/Modal.test.tsx +2 -2
  44. package/src/components/Pagination/Pagination.test.tsx +1 -1
  45. package/src/components/Popover/Popover.test.tsx +2 -2
  46. package/src/components/ProgressBar/ProgressBar.test.tsx +1 -1
  47. package/src/components/Radio/Radio.test.tsx +2 -2
  48. package/src/components/Section/Section.test.tsx +2 -2
  49. package/src/components/Section/Sections.stories.tsx +1 -1
  50. package/src/components/Select/Select.fixtures.ts +1 -1
  51. package/src/components/Select/Select.stories.tsx +2 -2
  52. package/src/components/Select/Select.test.tsx +12 -5
  53. package/src/components/Select/useSelect.helpers.test.ts +1 -1
  54. package/src/components/SideNavigation/Logo/Logo.test.tsx +2 -2
  55. package/src/components/SideNavigation/Menu/Menu.test.tsx +2 -2
  56. package/src/components/SideNavigation/Separator/Separator.test.tsx +1 -1
  57. package/src/components/SideNavigation/SideNavigation.test.tsx +2 -2
  58. package/src/components/Steps/Steps.fixtures.ts +1 -1
  59. package/src/components/Steps/Steps.test.tsx +2 -2
  60. package/src/components/Steps/useStep.test.tsx +1 -1
  61. package/src/components/Switch/Switch.test.tsx +1 -1
  62. package/src/components/Table/Table.fixtures.ts +1 -1
  63. package/src/components/Table/Table.test.tsx +1 -1
  64. package/src/components/TablePagination/TablePagination.test.tsx +1 -1
  65. package/src/components/Tabs/Tabs.test.tsx +1 -1
  66. package/src/components/Tag/Tag.stories.tsx +1 -1
  67. package/src/components/Tag/Tag.test.tsx +2 -2
  68. package/src/components/Text/Text.test.tsx +2 -2
  69. package/src/components/TextField/TextField.test.tsx +1 -1
  70. package/src/components/Textarea/Textarea.test.tsx +1 -1
  71. package/src/components/Toast/Toast.test.tsx +2 -2
  72. package/src/components/ToggleGroup/Toggle.test.tsx +2 -2
  73. package/src/components/ToggleGroup/ToggleGroup.test.tsx +2 -2
  74. package/src/components/Tooltip/Tooltip.test.tsx +2 -2
  75. package/src/components/TopNavigation/Logo/Logo.test.tsx +2 -2
  76. package/src/components/TopNavigation/Menu/Menu.test.tsx +1 -1
  77. package/src/components/VisuallyHidden/VisuallyHidden.test.tsx +1 -1
  78. package/src/hooks/useClickOutside/useClickOutside.test.tsx +1 -1
  79. package/src/hooks/useDidMount/useDidMount.test.tsx +1 -1
  80. package/src/hooks/useFocusTrap/useFocusTrap.test.tsx +1 -1
  81. package/src/hooks/useFocusWithin/useFocusWithin.test.tsx +1 -1
  82. package/src/hooks/useHeightExpansionToggler/useHeightExpansionToggler.test.tsx +1 -1
  83. package/src/hooks/useSelectable/SelectableStrategy.test.ts +1 -1
  84. package/src/hooks/useSelectable/useSelectable.test.ts +1 -1
  85. package/src/testing/SelectEvent/SelectEvent.test.tsx +2 -2
  86. package/src/tests/generator.ts +127 -0
  87. package/src/tests/renderer.tsx +39 -0
  88. package/src/tools/conditional.test.ts +1 -1
  89. 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
  })