import * as dateTimePickerLib from '~/vue_shared/components/date_time_picker/date_time_picker_lib'; describe('date time picker lib', () => { describe('isValidDate', () => { [ { input: '2019-09-09T00:00:00.000Z', output: true, }, { input: '2019-09-09T000:00.000Z', output: false, }, { input: 'a2019-09-09T000:00.000Z', output: false, }, { input: '2019-09-09T', output: false, }, { input: '2019-09-09', output: true, }, { input: '2019-9-9', output: true, }, { input: '2019-9-', output: true, }, { input: '2019--', output: false, }, { input: '2019', output: true, }, { input: '', output: false, }, { input: null, output: false, }, ].forEach(({ input, output }) => { it(`isValidDate return ${output} for ${input}`, () => { expect(dateTimePickerLib.isValidDate(input)).toBe(output); }); }); }); describe('stringToISODate', () => { ['', 'null', undefined, 'abc'].forEach(input => { it(`throws error for invalid input like ${input}`, done => { try { dateTimePickerLib.stringToISODate(input); } catch (e) { expect(e).toBeDefined(); done(); } }); }); [ { input: '2019-09-09 01:01:01', output: '2019-09-09T01:01:01Z', }, { input: '2019-09-09 00:00:00', output: '2019-09-09T00:00:00Z', }, { input: '2019-09-09 23:59:59', output: '2019-09-09T23:59:59Z', }, { input: '2019-09-09', output: '2019-09-09T00:00:00Z', }, ].forEach(({ input, output }) => { it(`returns ${output} from ${input}`, () => { expect(dateTimePickerLib.stringToISODate(input)).toBe(output); }); }); }); describe('truncateZerosInDateTime', () => { [ { input: '', output: '', }, { input: '2019-10-10', output: '2019-10-10', }, { input: '2019-10-10 00:00:01', output: '2019-10-10 00:00:01', }, { input: '2019-10-10 00:00:00', output: '2019-10-10', }, ].forEach(({ input, output }) => { it(`truncateZerosInDateTime return ${output} for ${input}`, () => { expect(dateTimePickerLib.truncateZerosInDateTime(input)).toBe(output); }); }); }); describe('isDateTimePickerInputValid', () => { [ { input: null, output: false, }, { input: '', output: false, }, { input: 'xxxx-xx-xx', output: false, }, { input: '9999-99-19', output: false, }, { input: '2019-19-23', output: false, }, { input: '2019-09-23', output: true, }, { input: '2019-09-23 x', output: false, }, { input: '2019-09-29 0:0:0', output: false, }, { input: '2019-09-29 00:00:00', output: true, }, { input: '2019-09-29 24:24:24', output: false, }, { input: '2019-09-29 23:24:24', output: true, }, { input: '2019-09-29 23:24:24 ', output: false, }, ].forEach(({ input, output }) => { it(`returns ${output} for ${input}`, () => { expect(dateTimePickerLib.isDateTimePickerInputValid(input)).toBe(output); }); }); }); });