import React from 'react';
import { render } from '@testing-library/react';
import '@testing-library/jest-dom';
import { UpdatedTimestamp } from '../UpdatedTimestamp';
import MockDate from 'mockdate';
describe('UpdatedTimestamp', () => {
const updated = '2022-02-28T09:00:00Z';
afterEach(() => MockDate.reset());
it('does not show the timestamp within the first minute after the last update', () => {
MockDate.set('2022-02-28T09:00:00Z');
const { baseElement, queryByTestId } = render(
);
expect(baseElement).toMatchSnapshot();
expect(queryByTestId('MinutesHoursSinceUpdate')).toBeFalsy();
});
it('appears one minute after the last update', () => {
MockDate.set('2022-02-28T09:01:00Z');
const { queryByTestId } = render(
);
expect(queryByTestId('MinutesHoursSinceUpdate')).toBeTruthy();
expect(queryByTestId('MinutesHoursSinceUpdate')!.textContent).toBe(
'Updated 1 minute ago'
);
});
it('appears between 1 and 12 hours after the last update', () => {
MockDate.set('2022-02-28T11:30:00Z');
const { queryByTestId } = render(
);
expect(queryByTestId('MinutesHoursSinceUpdate')).toBeTruthy();
expect(queryByTestId('MinutesHoursSinceUpdate')!.textContent).toBe(
'Updated 2 hours ago'
);
});
it('shows the date and time of update 13 hours or more after the last update', () => {
MockDate.set('2022-02-28T23:30:00Z');
const { queryByTestId } = render(
);
expect(queryByTestId('DateTimeUpdated')).toBeTruthy();
expect(queryByTestId('DateTimeUpdated')!.textContent).toBe(
'Updated February 28, 9.00am'
);
});
it('shows timestamp with an overrided color', () => {
MockDate.set('2022-02-28T23:30:00Z');
const { baseElement } = render(
);
expect(baseElement).toMatchSnapshot();
});
});