@@ -32,7 +32,8 @@ export const isTimeAfter = (h1, m1, h2, m2) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export const generateRelativeTime = (value, unit, languageCode) => {
|
export const generateRelativeTime = (value, unit, languageCode) => {
|
||||||
const rtf = new Intl.RelativeTimeFormat(languageCode, {
|
const code = languageCode?.replace(/_/g, '-'); // Hacky fix we need to handle it from source
|
||||||
|
const rtf = new Intl.RelativeTimeFormat(code, {
|
||||||
numeric: 'auto',
|
numeric: 'auto',
|
||||||
});
|
});
|
||||||
return rtf.format(value, unit);
|
return rtf.format(value, unit);
|
||||||
|
|||||||
@@ -64,15 +64,59 @@ describe('#isTimeAfter', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('#generateRelativeTime', () => {
|
describe('generateRelativeTime', () => {
|
||||||
it('should return correct relative time', () => {
|
it('should return a string with the relative time', () => {
|
||||||
expect(generateRelativeTime(-1, 'day', 'en')).toEqual('yesterday');
|
const value = 1;
|
||||||
expect(generateRelativeTime(1, 'day', 'en')).toEqual('tomorrow');
|
const unit = 'second';
|
||||||
expect(generateRelativeTime(1, 'hour', 'en')).toEqual('in 1 hour');
|
const languageCode = 'en-US';
|
||||||
expect(generateRelativeTime(-1, 'hour', 'en')).toEqual('1 hour ago');
|
const expectedResult = 'in 1 second';
|
||||||
expect(generateRelativeTime(1, 'minute', 'en')).toEqual('in 1 minute');
|
|
||||||
expect(generateRelativeTime(-1, 'minute', 'en')).toEqual('1 minute ago');
|
const actualResult = generateRelativeTime(value, unit, languageCode);
|
||||||
expect(generateRelativeTime(1, 'second', 'en')).toEqual('in 1 second');
|
|
||||||
expect(generateRelativeTime(-1, 'second', 'en')).toEqual('1 second ago');
|
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);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user