dates.spec.tsx 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. import {User} from 'fixtures/js-stubs/user';
  2. import ConfigStore from 'sentry/stores/configStore';
  3. import {
  4. getTimeFormat,
  5. intervalToMilliseconds,
  6. parsePeriodToHours,
  7. setDateToTime,
  8. shouldUse24Hours,
  9. } from 'sentry/utils/dates';
  10. describe('utils.dates', function () {
  11. describe('setDateToTime', function () {
  12. it('can set new time for current date', function () {
  13. const date = new Date();
  14. const newDate = setDateToTime(date, '11:11');
  15. expect(newDate).toEqual(new Date(1508238680000));
  16. });
  17. it('can set new time (including seconds) for current date', function () {
  18. const date = new Date();
  19. const newDate = setDateToTime(date, '11:11:11');
  20. expect(newDate).toEqual(new Date(1508238671000));
  21. });
  22. it('can set new time in local for current date', function () {
  23. const date = new Date();
  24. const newDate = setDateToTime(date, '11:11:11', {local: true});
  25. expect(newDate).toEqual(new Date(1508166671000));
  26. });
  27. });
  28. describe('intervalToMilliseconds()', function () {
  29. it('can convert standard formats', function () {
  30. expect(intervalToMilliseconds('24h')).toBe(86400000);
  31. expect(intervalToMilliseconds('30m')).toBe(1800000);
  32. expect(intervalToMilliseconds('15m')).toBe(900000);
  33. expect(intervalToMilliseconds('5m')).toBe(300000);
  34. expect(intervalToMilliseconds('1m')).toBe(60000);
  35. });
  36. it('can convert arbitrary formats', function () {
  37. expect(intervalToMilliseconds('30d')).toBe(2592000000);
  38. expect(intervalToMilliseconds('7d')).toBe(604800000);
  39. expect(intervalToMilliseconds('1d')).toBe(86400000);
  40. expect(intervalToMilliseconds('1h')).toBe(3600000);
  41. expect(intervalToMilliseconds('2m')).toBe(120000);
  42. });
  43. });
  44. describe('parsePeriodToHours()', function () {
  45. it('can convert standard formats', function () {
  46. expect(parsePeriodToHours('30s').toFixed(4)).toBe('0.0083');
  47. expect(parsePeriodToHours('1m').toFixed(4)).toBe('0.0167');
  48. expect(parsePeriodToHours('1h')).toBe(1);
  49. expect(parsePeriodToHours('24h')).toBe(24);
  50. expect(parsePeriodToHours('1d')).toBe(24);
  51. expect(parsePeriodToHours('2w')).toBe(336);
  52. });
  53. it('handle invalid statsPeriod', function () {
  54. expect(parsePeriodToHours('24')).toBe(24 / 3600);
  55. expect(parsePeriodToHours('')).toBe(-1);
  56. expect(parsePeriodToHours('24x')).toBe(-1);
  57. });
  58. });
  59. describe('user clock preferences', function () {
  60. afterEach(function () {
  61. ConfigStore.set('user', User({}));
  62. });
  63. describe('shouldUse24Hours()', function () {
  64. it('returns false if user preference is 12 hour clock', function () {
  65. const user = User();
  66. user.options.clock24Hours = false;
  67. ConfigStore.set('user', user);
  68. expect(shouldUse24Hours()).toBe(false);
  69. });
  70. it('returns true if user preference is 24 hour clock', function () {
  71. const user = User();
  72. user.options.clock24Hours = true;
  73. ConfigStore.set('user', user);
  74. expect(shouldUse24Hours()).toBe(true);
  75. });
  76. });
  77. describe('getTimeFormat()', function () {
  78. it('does not use AM/PM if shouldUse24Hours is true', function () {
  79. const user = User();
  80. user.options.clock24Hours = true;
  81. ConfigStore.set('user', user);
  82. expect(getTimeFormat()).toBe('HH:mm');
  83. });
  84. it('uses AM/PM if shouldUse24Hours is false', function () {
  85. const user = User();
  86. user.options.clock24Hours = false;
  87. ConfigStore.set('user', user);
  88. expect(getTimeFormat()).toBe('LT');
  89. });
  90. });
  91. });
  92. });