import { getDateTimeStringFromISODateOnly } from './datetime' describe('datetime - getDateTimeStringFromISODateOnly', () => { const daylightSavingDateTime = '2021-02-28T09:41:30.000Z' // UTC const standardDateTime = '2021-07-31T09:41:30.000Z' // UTC const daylightSavingDateTimeMillis = 1614470400000 const standardDateTimeMillis = 1627689600000 const daylightSavingDateTimeNewYork = '2021-02-28T09:41:30.000-05:00' // America/New_York const standardDateTimeNewYork = '2021-07-31T09:41:30.000-04:00' // America/New_York it.each([ ['en-US'], ['es-UY'], ['pt-BR'], ['en-GB'], ['fr-FR'], ['ka-GE'], ['hi-IN'], ])( 'daylightSavingDateTime - returns a string formatted for the TZ and Locale (TZ: %s, Locale: %s)', locale => expect( getDateTimeStringFromISODateOnly(daylightSavingDateTime, { locale, }) ).toEqual('2021-02-28T00:00:00') ) it.each([ ['en-US'], ['es-UY'], ['pt-BR'], ['en-GB'], ['fr-FR'], ['ka-GE'], ['hi-IN'], ])( 'daylightSavingDateTime, parse milliseconds - returns a string formatted for the TZ and Locale (TZ: %s, Locale: %s)', locale => expect( getDateTimeStringFromISODateOnly(daylightSavingDateTimeMillis, { locale, }) ).toEqual('2021-02-28T00:00:00') ) it.each([ ['en-US'], ['es-UY'], ['pt-BR'], ['en-GB'], ['fr-FR'], ['ka-GE'], ['hi-IN'], ])( 'standardDateTime - returns a string formatted for the TZ and Locale (TZ: %s, Locale: %s)', locale => expect( getDateTimeStringFromISODateOnly(standardDateTime, { locale, }) ).toEqual('2021-07-31T00:00:00') ) it.each([ ['en-US'], ['es-UY'], ['pt-BR'], ['en-GB'], ['fr-FR'], ['ka-GE'], ['hi-IN'], ])( 'standardDateTime, parse milliseconds - returns a string formatted for the TZ and Locale (TZ: %s, Locale: %s)', locale => expect( getDateTimeStringFromISODateOnly(standardDateTimeMillis, { locale, }) ).toEqual('2021-07-31T00:00:00') ) it.each([ ['en-US'], ['es-UY'], ['pt-BR'], ['en-GB'], ['fr-FR'], ['ka-GE'], ['hi-IN'], ])( 'daylightSavingDateTimeNewYork - returns a string formatted for the TZ and Locale (TZ: %s, Locale: %s)', locale => expect( getDateTimeStringFromISODateOnly(daylightSavingDateTimeNewYork, { locale, }) ).toEqual('2021-02-28T00:00:00') ) it.each([ ['en-US'], ['es-UY'], ['pt-BR'], ['en-GB'], ['fr-FR'], ['ka-GE'], ['hi-IN'], ])( 'standardDateTimeNewYork - returns a string formatted for the TZ and Locale (TZ: %s, Locale: %s)', locale => expect( getDateTimeStringFromISODateOnly(standardDateTimeNewYork, { locale, }) ).toEqual('2021-07-31T00:00:00') ) it('should handle invalid date strings', () => expect(() => getDateTimeStringFromISODateOnly('invalid date string', {}) ).toThrow('Invalid date string: invalid date string')) })