import { fromJSDateToLocaleString } from './index' describe('fromJSDateToLocaleString', () => { describe('for Date Time Picker', () => { it.each([ ['en-US', 'America/New_York', '2024-01-01T12:00:00.000-05:00', 'Mon, Jan 1, 2024, 12:00 PM'], // prettier-ignore ['en-GB', 'Europe/London', '2024-01-01T12:00:00.000-00:00', 'Mon, 1 Jan 2024, 12:00'], // prettier-ignore ['es-UY', 'America/Montevideo', '2024-01-01T12:00:00.000-03:00', 'lun, 1 ene. 2024, 12:00 p. m.'], // prettier-ignore ['pt-BR', 'America/Sao_Paulo', '2024-01-01T12:00:00.000-03:00', 'seg., 1 de jan. de 2024, 12:00'], // prettier-ignore ['fr-FR', 'Europe/Paris', '2024-01-01T12:00:00.000+01:00', 'lun. 1 janv. 2024, 12:00'], // prettier-ignore ['ka-GE', 'Asia/Tbilisi', '2024-01-01T12:00:00.000+04:00', 'ორშ, 1 იან. 2024, 12:00'], // prettier-ignore ['hi-IN', 'Asia/Kolkata', '2024-01-01T12:00:00.000+05:30', 'सोम, 1 जन॰ 2024, 12:00 pm'], // prettier-ignore ])( 'daylightSavingDateTime - should return a suitable display date for Date Time Picker, locale=%s', (locale, timezone, date, expected) => expect( fromJSDateToLocaleString(new Date(date), 'datetime', { locale, timezone, }) ).toEqual(expected) ) it.each([ ['en-US', 'America/New_York', '2024-07-01T12:00:00.000-04:00', 'Mon, Jul 1, 2024, 12:00 PM'], // prettier-ignore ['en-GB', 'Europe/London', '2024-07-01T12:00:00.000+01:00', 'Mon, 1 Jul 2024, 12:00'], // prettier-ignore ['es-UY', 'America/Montevideo', '2024-07-01T12:00:00.000-03:00', 'lun, 1 jul. 2024, 12:00 p. m.'], // prettier-ignore ['pt-BR', 'America/Sao_Paulo', '2024-07-01T12:00:00.000-03:00', 'seg., 1 de jul. de 2024, 12:00'], // prettier-ignore ['fr-FR', 'Europe/Paris', '2024-07-01T12:00:00.000+02:00', 'lun. 1 juil. 2024, 12:00'], // prettier-ignore ['ka-GE', 'Asia/Tbilisi', '2024-07-01T12:00:00.000+04:00', 'ორშ, 1 ივლ. 2024, 12:00'], // prettier-ignore ['hi-IN', 'Asia/Kolkata', '2024-07-01T12:00:00.000+05:30', 'सोम, 1 जुल॰ 2024, 12:00 pm'], // prettier-ignore ])( 'standardDateTime - should return a suitable display date for Date Time Picker, locale=%s', (locale, timezone, date, expected) => expect( fromJSDateToLocaleString(new Date(date), 'datetime', { locale, timezone, }) ).toEqual(expected) ) }) describe('for Date Picker', () => { it.each([ ['en-US', 'America/New_York', '2024-01-01T12:00:00.000-05:00', 'Monday, January 1, 2024'], // prettier-ignore ['en-GB', 'Europe/London', '2024-01-01T12:00:00.000-00:00', 'Monday 1 January 2024'], // prettier-ignore ['es-UY', 'America/Montevideo', '2024-01-01T12:00:00.000-03:00', 'lunes, 1 de enero de 2024'], // prettier-ignore ['pt-BR', 'America/Sao_Paulo', '2024-01-01T12:00:00.000-03:00', 'segunda-feira, 1 de janeiro de 2024'], // prettier-ignore ['fr-FR', 'Europe/Paris', '2024-01-01T12:00:00.000+01:00', 'lundi 1 janvier 2024'], // prettier-ignore ['ka-GE', 'Asia/Tbilisi', '2024-01-01T12:00:00.000+04:00', 'ორშაბათი, 1 იანვარი, 2024'], // prettier-ignore ['hi-IN', 'Asia/Kolkata', '2024-01-01T12:00:00.000+05:30', 'सोमवार, 1 जनवरी 2024'], // prettier-ignore ])( 'daylightSavingDateTime - should return a suitable display date for Date Picker, locale=%s', (locale, timezone, date, expected) => expect( fromJSDateToLocaleString(new Date(date), 'date', { locale, timezone, }) ).toEqual(expected) ) it.each([ ['en-US', 'America/New_York', '2024-07-01T12:00:00.000-04:00', 'Monday, July 1, 2024'], // prettier-ignore ['en-GB', 'Europe/London', '2024-07-01T12:00:00.000+01:00', 'Monday 1 July 2024'], // prettier-ignore ['es-UY', 'America/Montevideo', '2024-07-01T12:00:00.000-03:00', 'lunes, 1 de julio de 2024'], // prettier-ignore ['pt-BR', 'America/Sao_Paulo', '2024-07-01T12:00:00.000-03:00', 'segunda-feira, 1 de julho de 2024'], // prettier-ignore ['fr-FR', 'Europe/Paris', '2024-07-01T12:00:00.000+02:00', 'lundi 1 juillet 2024'], // prettier-ignore ['ka-GE', 'Asia/Tbilisi', '2024-07-01T12:00:00.000+04:00', 'ორშაბათი, 1 ივლისი, 2024'], // prettier-ignore ['hi-IN', 'Asia/Kolkata', '2024-07-01T12:00:00.000+05:30', 'सोमवार, 1 जुलाई 2024'], // prettier-ignore ])( 'standardDateTime - should return a suitable display date for Date Picker, locale=%s', (locale, timezone, date, expected) => expect( fromJSDateToLocaleString(new Date(date), 'date', { locale, timezone, }) ).toEqual(expected) ) }) describe('for Date Text Input', () => { it.each([ ['en-US', 'America/New_York', '2024-01-01T12:00:00.000-05:00', '1/1/2024'], // prettier-ignore ['en-GB', 'Europe/London', '2024-01-01T12:00:00.000-00:00', '01/01/2024'], // prettier-ignore ['es-UY', 'America/Montevideo', '2024-01-01T12:00:00.000-03:00', '1/1/2024'], // prettier-ignore ['pt-BR', 'America/Sao_Paulo', '2024-01-01T12:00:00.000-03:00', '01/01/2024'], // prettier-ignore ['fr-FR', 'Europe/Paris', '2024-01-01T12:00:00.000+01:00', '01/01/2024'], // prettier-ignore ['ka-GE', 'Asia/Tbilisi', '2024-01-01T12:00:00.000+04:00', '1.1.2024'], // prettier-ignore ['hi-IN', 'Asia/Kolkata', '2024-01-01T12:00:00.000+05:30', '1/1/2024'], // prettier-ignore ])( 'daylightSavingDateTime - should return a suitable display date for Date Text Input, locale=%s', (locale, timezone, date, expected) => expect( fromJSDateToLocaleString(new Date(date), 'date-text', { locale, timezone, }) ).toEqual(expected) ) it.each([ ['en-US', 'America/New_York', '2024-07-01T12:00:00.000-04:00', '7/1/2024'], // prettier-ignore ['en-GB', 'Europe/London', '2024-07-01T12:00:00.000+01:00', '01/07/2024'], // prettier-ignore ['es-UY', 'America/Montevideo', '2024-07-01T12:00:00.000-03:00', '1/7/2024'], // prettier-ignore ['pt-BR', 'America/Sao_Paulo', '2024-07-01T12:00:00.000-03:00', '01/07/2024'], // prettier-ignore ['fr-FR', 'Europe/Paris', '2024-07-01T12:00:00.000+02:00', '01/07/2024'], // prettier-ignore ['ka-GE', 'Asia/Tbilisi', '2024-07-01T12:00:00.000+04:00', '1.7.2024'], // prettier-ignore ['hi-IN', 'Asia/Kolkata', '2024-07-01T12:00:00.000+05:30', '1/7/2024'], // prettier-ignore ])( 'standardDateTime - should return a suitable display date for Date Text Input, locale=%s', (locale, timezone, date, expected) => expect( fromJSDateToLocaleString(new Date(date), 'date-text', { locale, timezone, }) ).toEqual(expected) ) }) describe('for error handling', () => { it('should throw an error if the date is invalid', () => expect(() => fromJSDateToLocaleString(new Date('invalid'))).toThrow( 'Invalid date string: Invalid Date' )) it('should throw an error if the datepickerVariation is invalid', () => // @ts-expect-error testing invalid input expect(() => fromJSDateToLocaleString(new Date(), 'invalid')).toThrow( 'Invalid datepicker variation: invalid' )) }) })