Skip to content

Commit

Permalink
refactor(date): Use Jest fake timers (#21631)
Browse files Browse the repository at this point in the history
  • Loading branch information
zharinov committed Apr 20, 2023
1 parent 62d051f commit 58fe0bd
Showing 1 changed file with 30 additions and 23 deletions.
53 changes: 30 additions & 23 deletions lib/util/date.spec.ts
@@ -1,49 +1,56 @@
import { DateTime } from 'luxon';
import {
getElapsedDays,
getElapsedHours,
getElapsedMinutes,
getElapsedMs,
} from './date';

const ONE_MINUTE_MS = 60 * 1000;
const ONE_HOUR_MS = 60 * ONE_MINUTE_MS;
const ONE_DAY_MS = 24 * ONE_HOUR_MS;

describe('util/date', () => {
const Jan1 = new Date(new Date().getFullYear(), 0, 1);
const t0 = DateTime.fromISO('2020-10-10');

beforeAll(() => {
jest.useFakeTimers();
});

beforeEach(() => {
jest.setSystemTime(t0.toMillis());
});

it('returns elapsed days', () => {
const elapsedDays = Math.floor(
(new Date().getTime() - new Date(Jan1).getTime()) / ONE_DAY_MS
);
expect(getElapsedDays(Jan1.toDateString())).toBe(elapsedDays);
afterAll(() => {
jest.useRealTimers();
});

it('returns elapsed minutes', () => {
const elapsedMinutes = Math.floor(
(new Date().getTime() - new Date(Jan1).getTime()) / ONE_MINUTE_MS
);
expect(getElapsedMinutes(new Date(Jan1))).toBe(elapsedMinutes);
describe('getElapsedDays', () => {
it('returns elapsed days', () => {
const t = t0.minus({ days: 42 });
expect(getElapsedDays(t.toISO()!)).toBe(42);
});
});

describe('getElapsedMinutes', () => {
it('returns elapsed minutes', () => {
const t = t0.minus({ minutes: 42 });
expect(getElapsedMinutes(t.toJSDate())).toBe(42);
});
});

describe('getElapsedHours', () => {
it('returns elapsed hours', () => {
const elapsedHours = Math.floor(
(new Date().getTime() - new Date(Jan1).getTime()) / ONE_HOUR_MS
);
expect(getElapsedHours(Jan1.toISOString())).toBe(elapsedHours); // ISOstring
expect(getElapsedHours(Jan1)).toBe(elapsedHours); // JS Date
const t = t0.minus({ hours: 42 });
expect(getElapsedHours(t.toISO()!)).toBe(42); // ISOstring
expect(getElapsedHours(t.toJSDate())).toBe(42); // JS Date
});

it('returns zero when date passed is invalid', () => {
expect(getElapsedHours(new Date('invalid_date_string'))).toBe(0);
});
});

describe('getElapsedMilliseconds', () => {
describe('getElapsedMs', () => {
it('returns elapsed time in milliseconds', () => {
const elapsedMs = new Date().getTime() - new Date(Jan1).getTime();
expect(getElapsedMs(Jan1.toISOString())).toBe(elapsedMs);
const t = t0.minus({ milliseconds: 42 });
expect(getElapsedMs(t.toISO()!)).toBe(42);
});
});
});

0 comments on commit 58fe0bd

Please sign in to comment.