import { formatters } from '@adalo/constants' import { getDateTimeFromISO } from './datetime' import { formatDate, formatDateOnly } from './formatters' // NOTE: not intended to be exhaustive, just enough to check that the function is working // See the individual formatting.*.test.ts files for more detailed tests describe('formatDate', () => { const dateTime = getDateTimeFromISO('2024-08-19T00:00:00.000Z') it.each([ [formatters.date.RELATIVE, dateTime.plus({ minute: 1 }).toISO(), 'in 1 minute'], // prettier-ignore [formatters.date.RELATIVE_SHORT, dateTime.plus({ minute: 1 }).toISO(), 'in 1m'], // prettier-ignore [formatters.date.ABSOLUTE_DATE, dateTime.toISO(), '8/19/2024'], [formatters.date.UNIVERSAL_DATE, dateTime.toISO(), '19/8/2024'], [formatters.date.ABSOLUTE_DATETIME, dateTime.toISO(), '8/19/2024 12:00 AM'], // prettier-ignore [formatters.date.WEEK_DAY_LONG, dateTime.toISO(), 'Monday'], [formatters.date.WEEK_DAY_SHORT, dateTime.toISO(), 'Mon'], [formatters.date.DAY_NUMBER, dateTime.toISO(), '19'], [formatters.date.MONTH_NAME_LONG, dateTime.toISO(), 'August'], [formatters.date.MONTH_NAME_SHORT, dateTime.toISO(), 'Aug'], [formatters.date.MONTH_NUMBER, dateTime.toISO(), '8'], [formatters.date.YEAR_NUMBER_LONG, dateTime.toISO(), '2024'], [formatters.date.YEAR_NUMBER_SHORT, dateTime.toISO(), '24'], [formatters.date.TIME, dateTime.toISO(), '12:00 AM'], [formatters.date.ISO, dateTime.toISO(), '2024-08-19T00:00:00Z'], ['default', dateTime.toISO(), '2024-08-19T00:00:00Z'], ])( 'returns a formatted date, format=%s, now=%s, expected=%s', (type, dateString, expected) => expect( formatDate( dateString, { type }, { locale: 'en-US', timezone: 'UTC', now: dateTime } ) ).toBe(expected) ) }) describe('formatDateOnly', () => { const dateTime = getDateTimeFromISO('2024-08-19T00:00:00.000Z') it.each([ [formatters.dateOnly.RELATIVE, dateTime.plus({ minute: 1 }).toISO(), 'now'], // prettier-ignore [formatters.dateOnly.ABSOLUTE_DATE, dateTime.toISO(), '8/19/2024'], [formatters.dateOnly.UNIVERSAL_DATE, dateTime.toISO(), '19/8/2024'], [formatters.dateOnly.WEEK_DAY_LONG, dateTime.toISO(), 'Monday'], [formatters.dateOnly.WEEK_DAY_SHORT, dateTime.toISO(), 'Mon'], [formatters.dateOnly.DAY_NUMBER, dateTime.toISO(), '19'], [formatters.dateOnly.MONTH_NAME_LONG, dateTime.toISO(), 'August'], [formatters.dateOnly.MONTH_NAME_SHORT, dateTime.toISO(), 'Aug'], [formatters.dateOnly.MONTH_NUMBER, dateTime.toISO(), '8'], [formatters.dateOnly.YEAR_NUMBER_LONG, dateTime.toISO(), '2024'], [formatters.dateOnly.YEAR_NUMBER_SHORT, dateTime.toISO(), '24'], [formatters.dateOnly.ISO, dateTime.toISO(), '2024-08-19'], ])( 'returns a formatted date, format=%s, now=%s, expected=%s', (type, dateString, expected) => expect( formatDateOnly( dateString, { type }, { locale: 'en-US', timezone: 'UTC', now: dateTime } ) ).toBe(expected) ) })