@parsify/date
Version:
Parsify plugin for date & time parsing
24 lines (23 loc) • 1.45 kB
JavaScript
import test from 'ava';
import { lightFormat, addDays } from 'date-fns';
import parsifyDatePlugin from './src/index.js';
test('general', async (t) => {
const result = await parsifyDatePlugin()('17 days from now');
t.is(result, new Date(addDays(new Date(), 17)).toLocaleString(undefined, { day: 'numeric', month: 'numeric', year: 'numeric', hour: 'numeric', minute: 'numeric' }));
});
test('allows setting a different date format', async (t) => {
const result = await parsifyDatePlugin({ format: 'yyyy/MM/dd' })('17 days from now');
t.is(result, lightFormat(addDays(new Date(), 17), 'yyyy/MM/dd'));
});
test('if the provided date format is invalid, fallback to default', async (t) => {
const result = await parsifyDatePlugin({ format: 'foo' })('17 days from now');
t.is(result, new Date(addDays(new Date(), 17)).toLocaleString(undefined, { day: 'numeric', month: 'numeric', year: 'numeric', hour: 'numeric', minute: 'numeric' }));
});
test('if an error occurs, just output the expression', async (t) => {
t.is(await parsifyDatePlugin()('foo / bar'), 'foo / bar');
t.is(await parsifyDatePlugin()('round(1 month in days)'), 'round(1 month in days)');
t.is(await parsifyDatePlugin()('1+2'), '1+2');
t.is(await parsifyDatePlugin()('3'), '3');
t.is(await parsifyDatePlugin()('fasdfasfasftodayadffdas'), 'fasdfasfasftodayadffdas');
t.is(await parsifyDatePlugin()('3 weeks in days'), '3 weeks in days');
});