|
@@ -1,10 +1,15 @@
|
|
|
import {
|
|
|
+ DAY,
|
|
|
formatAbbreviatedNumber,
|
|
|
formatFloat,
|
|
|
formatPercentage,
|
|
|
+ formatSecondsToClock,
|
|
|
getDuration,
|
|
|
getExactDuration,
|
|
|
+ MONTH,
|
|
|
+ parseClockToSeconds,
|
|
|
userDisplayName,
|
|
|
+ WEEK,
|
|
|
} from 'sentry/utils/formatters';
|
|
|
|
|
|
describe('getDuration()', function () {
|
|
@@ -77,6 +82,78 @@ describe('getDuration()', function () {
|
|
|
});
|
|
|
});
|
|
|
|
|
|
+describe('formatSecondsToClock', function () {
|
|
|
+ it('should format durations', function () {
|
|
|
+ expect(formatSecondsToClock(0)).toBe('00:00');
|
|
|
+ expect(formatSecondsToClock(0.1)).toBe('00:00.100');
|
|
|
+ expect(formatSecondsToClock(1)).toBe('00:01');
|
|
|
+ expect(formatSecondsToClock(2)).toBe('00:02');
|
|
|
+ expect(formatSecondsToClock(65)).toBe('01:05');
|
|
|
+ expect(formatSecondsToClock(65.123)).toBe('01:05.123');
|
|
|
+ expect(formatSecondsToClock(122)).toBe('02:02');
|
|
|
+ expect(formatSecondsToClock(3720)).toBe('01:02:00');
|
|
|
+ expect(formatSecondsToClock(36000)).toBe('10:00:00');
|
|
|
+ expect(formatSecondsToClock(86400)).toBe('24:00:00');
|
|
|
+ expect(formatSecondsToClock(86400 * 2)).toBe('48:00:00');
|
|
|
+ });
|
|
|
+
|
|
|
+ it('should format negative durations', function () {
|
|
|
+ expect(formatSecondsToClock(-0)).toBe('00:00');
|
|
|
+ expect(formatSecondsToClock(-0.1)).toBe('00:00.100');
|
|
|
+ expect(formatSecondsToClock(-1)).toBe('00:01');
|
|
|
+ expect(formatSecondsToClock(-2)).toBe('00:02');
|
|
|
+ expect(formatSecondsToClock(-65)).toBe('01:05');
|
|
|
+ expect(formatSecondsToClock(-65.123)).toBe('01:05.123');
|
|
|
+ expect(formatSecondsToClock(-122)).toBe('02:02');
|
|
|
+ expect(formatSecondsToClock(-3720)).toBe('01:02:00');
|
|
|
+ expect(formatSecondsToClock(-36000)).toBe('10:00:00');
|
|
|
+ expect(formatSecondsToClock(-86400)).toBe('24:00:00');
|
|
|
+ expect(formatSecondsToClock(-86400 * 2)).toBe('48:00:00');
|
|
|
+ });
|
|
|
+
|
|
|
+ it('should not pad when padAll:false is set', function () {
|
|
|
+ const padAll = false;
|
|
|
+ expect(formatSecondsToClock(0, {padAll})).toBe('0:00');
|
|
|
+ expect(formatSecondsToClock(0.1, {padAll})).toBe('0:00.100');
|
|
|
+ expect(formatSecondsToClock(1, {padAll})).toBe('0:01');
|
|
|
+ expect(formatSecondsToClock(65, {padAll})).toBe('1:05');
|
|
|
+ expect(formatSecondsToClock(3720, {padAll})).toBe('1:02:00');
|
|
|
+ });
|
|
|
+});
|
|
|
+
|
|
|
+describe('parseClockToSeconds', function () {
|
|
|
+ it('should format durations', function () {
|
|
|
+ expect(parseClockToSeconds('0:00')).toBe(0);
|
|
|
+ expect(parseClockToSeconds('0:00.100')).toBe(0.1);
|
|
|
+ expect(parseClockToSeconds('0:01')).toBe(1);
|
|
|
+ expect(parseClockToSeconds('0:02')).toBe(2);
|
|
|
+ expect(parseClockToSeconds('1:05')).toBe(65);
|
|
|
+ expect(parseClockToSeconds('1:05.123')).toBe(65.123);
|
|
|
+ expect(parseClockToSeconds('2:02')).toBe(122);
|
|
|
+ expect(parseClockToSeconds('1:02:00')).toBe(3720);
|
|
|
+ expect(parseClockToSeconds('10:00:00')).toBe(36000);
|
|
|
+ expect(parseClockToSeconds('24:00:00')).toBe(DAY / 1000);
|
|
|
+ expect(parseClockToSeconds('48:00:00')).toBe((DAY * 2) / 1000);
|
|
|
+ expect(parseClockToSeconds('2:00:00:00')).toBe((DAY * 2) / 1000);
|
|
|
+ expect(parseClockToSeconds('1:00:00:00:00')).toBe(WEEK / 1000);
|
|
|
+ expect(parseClockToSeconds('1:00:00:00:00:00')).toBe(MONTH / 1000);
|
|
|
+ });
|
|
|
+
|
|
|
+ it('should ignore non-numeric input', function () {
|
|
|
+ expect(parseClockToSeconds('hello world')).toBe(0);
|
|
|
+ expect(parseClockToSeconds('a:b:c')).toBe(0);
|
|
|
+ expect(parseClockToSeconds('a:b:c.d')).toBe(0);
|
|
|
+ expect(parseClockToSeconds('a:b:10.d')).toBe(10);
|
|
|
+ expect(parseClockToSeconds('a:10:c.d')).toBe(600);
|
|
|
+ });
|
|
|
+
|
|
|
+ it('should handle as much invalid input as possible', function () {
|
|
|
+ expect(parseClockToSeconds('a:b:c.123')).toBe(0.123);
|
|
|
+ expect(parseClockToSeconds('a:b:10.d')).toBe(10);
|
|
|
+ expect(parseClockToSeconds('a:10:c.d')).toBe(600);
|
|
|
+ });
|
|
|
+});
|
|
|
+
|
|
|
describe('formatAbbreviatedNumber()', function () {
|
|
|
it('should abbreviate numbers', function () {
|
|
|
expect(formatAbbreviatedNumber(0)).toBe('0');
|