(Using dayjs v 1.10.7)
I have this file date.js containing a date function isPrioritizedItemOverdue:
const dayjs = require('dayjs');
const utc = require('dayjs/plugin/utc');
const timeZonePlugin = require('dayjs-ext/plugin/timeZone-custom');
const { populateTimeZones } = require('timezone-support/dist/lookup-convert');
const timeZoneData = require('./custom-data-2000-2032');
const LocalizedFormat = require('dayjs/plugin/localizedFormat');
const func = require('./func');
require('dayjs/locale/en-gb');
require('dayjs/locale/fr');
populateTimeZones(timeZoneData);
dayjs.extend(LocalizedFormat).extend(timeZonePlugin).extend(utc);
const isPrioritizedItemOverdue = ({ date, userTimezone }) => {
if (date) {
const todayInTimezone = dayjs().format({ timeZone: userTimezone });
const startOfTodayInUtc = dayjs(
`${todayInTimezone.substr(0, 10)}T00:00:00.000`)
.utc()
.toDate();
const targetDateInUtc = dayjs(date).utc().toDate();
return startOfTodayInUtc > targetDateInUtc;
}
return false;
};
module.exports = {
isPrioritizedItemOverdue,
}
The isPrioritizedItemOverdue works fine in the application, but when running a test that uses it I get Invalid Date returned from dayjs().format({ timeZone: userTimezone }):
import date from '../date';
test('isPrioritizedItemOverdue', () => {
const result = date.isPrioritizedItemOverdue({
date: '2022-01-01T00:00:00.000Z',
userTimezone: 'Europe/London'
});
expect(result).toBeTruthy();
});