From 8fb043de541df841a1267c91e5b03bc9efa31121 Mon Sep 17 00:00:00 2001 From: iamsivin Date: Fri, 19 May 2023 18:55:09 +0530 Subject: [PATCH] chore: spec fixes --- app/javascript/shared/helpers/DateHelper.js | 2 +- .../shared/helpers/specs/DateHelper.spec.js | 64 ++++++++++++++++--- 2 files changed, 55 insertions(+), 11 deletions(-) diff --git a/app/javascript/shared/helpers/DateHelper.js b/app/javascript/shared/helpers/DateHelper.js index f0d2eafe6..dcff6e4c5 100644 --- a/app/javascript/shared/helpers/DateHelper.js +++ b/app/javascript/shared/helpers/DateHelper.js @@ -39,7 +39,7 @@ export const getUnixStartOfDay = date => getUnixTime(startOfDay(date)); export const getUnixEndOfDay = date => getUnixTime(endOfDay(date)); export const generateRelativeTime = (value, unit, languageCode) => { - const code = languageCode.replace(/_/g, '-'); // Hacky fix we need to handle it from source + const code = languageCode?.replace(/_/g, '-'); // Hacky fix we need to handle it from source const rtf = new Intl.RelativeTimeFormat(code, { numeric: 'auto', }); diff --git a/app/javascript/shared/helpers/specs/DateHelper.spec.js b/app/javascript/shared/helpers/specs/DateHelper.spec.js index 030910a3d..ee2e3ef67 100644 --- a/app/javascript/shared/helpers/specs/DateHelper.spec.js +++ b/app/javascript/shared/helpers/specs/DateHelper.spec.js @@ -64,15 +64,59 @@ describe('#isTimeAfter', () => { }); }); -describe('#generateRelativeTime', () => { - it('should return correct relative time', () => { - expect(generateRelativeTime(-1, 'day', 'en')).toEqual('yesterday'); - expect(generateRelativeTime(1, 'day', 'en')).toEqual('tomorrow'); - expect(generateRelativeTime(1, 'hour', 'en')).toEqual('in 1 hour'); - expect(generateRelativeTime(-1, 'hour', 'en')).toEqual('1 hour ago'); - expect(generateRelativeTime(1, 'minute', 'en')).toEqual('in 1 minute'); - expect(generateRelativeTime(-1, 'minute', 'en')).toEqual('1 minute ago'); - expect(generateRelativeTime(1, 'second', 'en')).toEqual('in 1 second'); - expect(generateRelativeTime(-1, 'second', 'en')).toEqual('1 second ago'); +describe('generateRelativeTime', () => { + it('should return a string with the relative time', () => { + const value = 1; + const unit = 'second'; + const languageCode = 'en-US'; + const expectedResult = 'in 1 second'; + + const actualResult = generateRelativeTime(value, unit, languageCode); + + expect(actualResult).toBe(expectedResult); + }); + + it('should return a string with the relative time in a different language', () => { + const value = 10; + const unit = 'minute'; + const languageCode = 'de-DE'; + const expectedResult = 'in 10 Minuten'; + + const actualResult = generateRelativeTime(value, unit, languageCode); + + expect(actualResult).toBe(expectedResult); + }); + + it('should return a string with the relative time for a different unit', () => { + const value = 1; + const unit = 'hour'; + const languageCode = 'en-US'; + const expectedResult = 'in 1 hour'; + + const actualResult = generateRelativeTime(value, unit, languageCode); + + expect(actualResult).toBe(expectedResult); + }); + + it('should throw an error if the value is not a number', () => { + const value = 1; + const unit = 'day'; + const languageCode = 'en_US'; + const expectedResult = 'tomorrow'; + + const actualResult = generateRelativeTime(value, unit, languageCode); + + expect(actualResult).toBe(expectedResult); + }); + + it('should throw an error if the value is not a number', () => { + const value = 1; + const unit = 'day'; + const languageCode = 'en-US'; + const expectedResult = 'tomorrow'; + + const actualResult = generateRelativeTime(value, unit, languageCode); + + expect(actualResult).toBe(expectedResult); }); });