You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
mercury-parser/src/cleaners/date-published.test.js

79 lines
2.4 KiB
JavaScript

import assert from 'assert';
import moment from 'moment-timezone';
import {
default as cleanDatePublished,
cleanDateString,
} from './date-published';
describe('cleanDatePublished(dateString)', () => {
it('returns a date', () => {
const datePublished = cleanDatePublished('published: 1/1/2020');
assert.equal(
datePublished,
moment('1/1/2020', 'MM/DD/YYYY').toISOString()
// '2020-01-01T05:00:00.000Z',
);
});
it('returns null if date is invalid', () => {
const datePublished = cleanDatePublished('blargh');
assert.equal(datePublished, null);
});
it('handles timezones', () => {
// The JS date parser is forgiving, but
// it needs am/pm separated from a time
const datePublished =
cleanDatePublished('November 29, 2016: 8:18 AM ET', { timezone: 'America/New_York' });
assert.equal(datePublished, '2016-11-29T13:18:00.000Z');
});
});
describe('cleanDateString(dateString)', () => {
it('removes "published" text from an datePublished string', () => {
const datePublished = cleanDateString('published: 1/1/2020');
assert.equal(datePublished, '1/1/2020');
});
it('trims whitespace', () => {
const datePublished = cleanDateString(' 1/1/2020 ');
assert.equal(datePublished, '1/1/2020');
});
it('puts a space b/w a time and am/pm', () => {
// The JS date parser is forgiving, but
// it needs am/pm separated from a time
const date1 = cleanDateString('1/1/2020 8:30am');
assert.equal(date1, '1/1/2020 8:30 am');
const date2 = cleanDateString('8:30PM 1/1/2020');
assert.equal(date2, '8:30 PM 1/1/2020');
});
it('cleans the dots from a.m. or p.m.', () => {
// The JS date parser is forgiving, but
// it needs a.m./p.m. without dots
const date1 = cleanDateString('1/1/2020 8:30 a.m.');
assert.equal(date1, '1/1/2020 8:30 am');
});
it('can handle some tough timestamps', () => {
// The JS date parser is forgiving, but
// it needs am/pm separated from a time
const date1 = cleanDateString('This page was last modified on 15 April 2016, at 10:59.');
assert.equal(date1, '15 Apr 2016 10:59');
});
it('massages the T out', () => {
// The JS date parser is forgiving, but
// it needs am/pm separated from a time
const date1 = cleanDateString('2016-11-22T08:57-500');
assert.equal(date1, '2016 11 22 08:57 -500');
});
});