require('~/lib/utils/pretty_time'); (() => { const prettyTime = gl.utils.prettyTime; describe('prettyTime methods', function () { describe('parseSeconds', function () { it('should correctly parse a negative value', function () { const parser = prettyTime.parseSeconds; const zeroSeconds = parser(-1000); expect(zeroSeconds.minutes).toBe(16); expect(zeroSeconds.hours).toBe(0); expect(zeroSeconds.days).toBe(0); expect(zeroSeconds.weeks).toBe(0); }); it('should correctly parse a zero value', function () { const parser = prettyTime.parseSeconds; const zeroSeconds = parser(0); expect(zeroSeconds.minutes).toBe(0); expect(zeroSeconds.hours).toBe(0); expect(zeroSeconds.days).toBe(0); expect(zeroSeconds.weeks).toBe(0); }); it('should correctly parse a small non-zero second values', function () { const parser = prettyTime.parseSeconds; const subOneMinute = parser(10); expect(subOneMinute.minutes).toBe(0); expect(subOneMinute.hours).toBe(0); expect(subOneMinute.days).toBe(0); expect(subOneMinute.weeks).toBe(0); const aboveOneMinute = parser(100); expect(aboveOneMinute.minutes).toBe(1); expect(aboveOneMinute.hours).toBe(0); expect(aboveOneMinute.days).toBe(0); expect(aboveOneMinute.weeks).toBe(0); const manyMinutes = parser(1000); expect(manyMinutes.minutes).toBe(16); expect(manyMinutes.hours).toBe(0); expect(manyMinutes.days).toBe(0); expect(manyMinutes.weeks).toBe(0); }); it('should correctly parse large second values', function () { const parser = prettyTime.parseSeconds; const aboveOneHour = parser(4800); expect(aboveOneHour.minutes).toBe(20); expect(aboveOneHour.hours).toBe(1); expect(aboveOneHour.days).toBe(0); expect(aboveOneHour.weeks).toBe(0); const aboveOneDay = parser(110000); expect(aboveOneDay.minutes).toBe(33); expect(aboveOneDay.hours).toBe(6); expect(aboveOneDay.days).toBe(3); expect(aboveOneDay.weeks).toBe(0); const aboveOneWeek = parser(25000000); expect(aboveOneWeek.minutes).toBe(26); expect(aboveOneWeek.hours).toBe(0); expect(aboveOneWeek.days).toBe(3); expect(aboveOneWeek.weeks).toBe(173); }); }); describe('stringifyTime', function () { it('should stringify values with all non-zero units', function () { const timeObject = { weeks: 1, days: 4, hours: 7, minutes: 20, }; const timeString = prettyTime.stringifyTime(timeObject); expect(timeString).toBe('1w 4d 7h 20m'); }); it('should stringify values with some non-zero units', function () { const timeObject = { weeks: 0, days: 4, hours: 0, minutes: 20, }; const timeString = prettyTime.stringifyTime(timeObject); expect(timeString).toBe('4d 20m'); }); it('should stringify values with no non-zero units', function () { const timeObject = { weeks: 0, days: 0, hours: 0, minutes: 0, }; const timeString = prettyTime.stringifyTime(timeObject); expect(timeString).toBe('0m'); }); }); describe('abbreviateTime', function () { it('should abbreviate stringified times for weeks', function () { const fullTimeString = '1w 3d 4h 5m'; expect(prettyTime.abbreviateTime(fullTimeString)).toBe('1w'); }); it('should abbreviate stringified times for non-weeks', function () { const fullTimeString = '0w 3d 4h 5m'; expect(prettyTime.abbreviateTime(fullTimeString)).toBe('3d'); }); }); }); })(window.gl || (window.gl = {}));