import { Status } from '../common';
import { render, fireEvent, screen, mockMatchMedia } from '../test-utils';
import Summary from './Summary';
mockMatchMedia();
describe('Summary', () => {
describe('action', () => {
const onClickStub = jest.fn();
const props = {
icon: icon,
title: 'Hello world',
action: {
text: 'text',
href: 'href',
target: '_blank',
onClick: onClickStub,
},
};
it('sets target on the link', () => {
render();
const element = screen.getByText('text');
expect(element).toHaveAttribute('target', props.action.target);
});
it('runs the onClick callback provided', () => {
render();
fireEvent.click(screen.getByRole('link'));
expect(onClickStub).toHaveBeenCalledTimes(1);
});
});
describe('statuses for both Themes', () => {
const props = {
icon: icon,
title: 'Hello world',
};
it('personal theme: renders no badge by default', () => {
const { container } = render();
expect(container.querySelector('.status-circle')).not.toBeInTheDocument();
expect(container.querySelector('.pending')).not.toBeInTheDocument();
expect(container.querySelector('.positive')).not.toBeInTheDocument();
});
it('personal theme: renders an aria-label and no badge for a not done status', () => {
const { container } = render();
expect(screen.getByLabelText('Item to do')).toBeInTheDocument();
expect(container.querySelector('.status-circle')).not.toBeInTheDocument();
expect(container.querySelector('.pending')).not.toBeInTheDocument();
expect(container.querySelector('.positive')).not.toBeInTheDocument();
});
it('personal theme: renders badge and aria-label for a pending status', () => {
const { container } = render();
expect(screen.getByLabelText('Item pending')).toBeInTheDocument();
expect(container.querySelector('.status-circle')).toBeInTheDocument();
expect(container.querySelector('.pending')).toBeInTheDocument();
});
it('personal theme: renders badge and aria-label for a done status', () => {
const { container } = render();
expect(screen.getByLabelText('Item done')).toBeInTheDocument();
expect(container.querySelector('.status-circle')).toBeInTheDocument();
expect(container.querySelector('.positive')).toBeInTheDocument();
});
});
});