Commit f3cf031a authored by Phil Hughes's avatar Phil Hughes

Merge branch 'fix-format-date-safari-ff' into 'master'

Throw an error when formatDate's input is invalid

See merge request gitlab-org/gitlab-ce!28713
parents ff7766b9 dade5a44
...@@ -79,7 +79,12 @@ export const getDayName = date => ...@@ -79,7 +79,12 @@ export const getDayName = date =>
* @param {date} datetime * @param {date} datetime
* @returns {String} * @returns {String}
*/ */
export const formatDate = datetime => dateFormat(datetime, 'mmm d, yyyy h:MMtt Z'); export const formatDate = datetime => {
if (_.isString(datetime) && datetime.match(/\d+-\d+\d+ /)) {
throw new Error('Invalid date');
}
return dateFormat(datetime, 'mmm d, yyyy h:MMtt Z');
};
/** /**
* Timeago uses underscores instead of dashes to separate language from country code. * Timeago uses underscores instead of dashes to separate language from country code.
......
---
title: Throw an error when formatDate's input is invalid
merge_request: 28713
author:
type: fixed
...@@ -65,6 +65,26 @@ describe('Date time utils', () => { ...@@ -65,6 +65,26 @@ describe('Date time utils', () => {
}); });
}); });
describe('formatDate', () => {
it('should format date properly', () => {
const formattedDate = datetimeUtility.formatDate(new Date('07/23/2016'));
expect(formattedDate).toBe('Jul 23, 2016 12:00am GMT+0000');
});
it('should format ISO date properly', () => {
const formattedDate = datetimeUtility.formatDate('2016-07-23T00:00:00.559Z');
expect(formattedDate).toBe('Jul 23, 2016 12:00am GMT+0000');
});
it('should throw an error if date is invalid', () => {
expect(() => {
datetimeUtility.formatDate('2016-07-23 00:00:00 UTC');
}).toThrow(new Error('Invalid date'));
});
});
describe('get day difference', () => { describe('get day difference', () => {
it('should return 7', () => { it('should return 7', () => {
const firstDay = new Date('07/01/2016'); const firstDay = new Date('07/01/2016');
...@@ -380,7 +400,7 @@ describe('prettyTime methods', () => { ...@@ -380,7 +400,7 @@ describe('prettyTime methods', () => {
describe('calculateRemainingMilliseconds', () => { describe('calculateRemainingMilliseconds', () => {
beforeEach(() => { beforeEach(() => {
spyOn(Date, 'now').and.callFake(() => new Date('2063-04-04T00:42:00Z').getTime()); jest.spyOn(Date, 'now').mockImplementation(() => new Date('2063-04-04T00:42:00Z').getTime());
}); });
it('calculates the remaining time for a given end date', () => { it('calculates the remaining time for a given end date', () => {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment