import { Position } from '../common';
import { render, fireEvent, screen, mockMatchMedia } from '../test-utils';
import Modal, { ModalProps } from './Modal';
mockMatchMedia();
describe('Modal', () => {
const props: ModalProps = {
onClose: jest.fn(),
body: 'Some body',
position: Position.TOP,
open: true,
};
beforeEach(() => {
jest.clearAllMocks();
});
it(`doesn't calls onClose when click is inside modal`, () => {
render();
fireEvent.click(getDialog());
expect(props.onClose).not.toHaveBeenCalled();
});
it('calls onClose if click outside the content', () => {
render();
expect(props.onClose).not.toHaveBeenCalled();
fireEvent.click(screen.getByRole('presentation'));
expect(props.onClose).toHaveBeenCalledTimes(1);
});
it("doesn't call onClose if click outside the content and closing on dimmer is disabled", () => {
render();
fireEvent.click(screen.getByRole('presentation'));
expect(props.onClose).not.toHaveBeenCalled();
});
it('calls onClose when Escape is pressed on Modal', () => {
render();
expect(props.onClose).not.toHaveBeenCalled();
fireEvent.keyDown(getDialog(), { key: 'Escape' });
expect(props.onClose).toHaveBeenCalledTimes(1);
});
it('calls onClose when Escape is pressed on document', () => {
render();
expect(props.onClose).not.toHaveBeenCalled();
fireEvent.keyDown(document, { key: 'Escape' });
expect(props.onClose).toHaveBeenCalledTimes(1);
});
const getDialog = () => screen.getByRole('dialog');
});