import React, { Fragment } from 'react';
import { fireEvent, render, waitFor } from '@testing-library/react';
import { Modal } from '..';
import { Button } from '../../../button/v1';
test('Default use', async () => {
let isOpen = false;
const { asFragment, getByText } = render(
isOpen = false}
primaryButton={{
children: 'Primary button'
}}
secondaryButton={{
children: 'Secondary button',
onClick : () => isOpen = false
}}
>
Modal content
);
expect(asFragment()).toMatchSnapshot();
fireEvent.click(getByText('Trigger'));
await waitFor(() => {
expect(asFragment()).toMatchSnapshot();
});
});
test('Single Button', async () => {
let isOpen = false;
const { asFragment, getByText } = render(
isOpen = false}
primaryButton={{
children: 'Primary button'
}}
>
Modal content
);
expect(asFragment()).toMatchSnapshot();
fireEvent.click(getByText('Trigger'));
await waitFor(() => {
expect(asFragment()).toMatchSnapshot();
});
});
test('Placement bottom', async () => {
let isOpen = false;
const { asFragment, getByText } = render(
isOpen = false}
primaryButton={{
children: 'Primary button'
}}
>
Modal content
);
expect(asFragment()).toMatchSnapshot();
fireEvent.click(getByText('Trigger'));
await waitFor(() => {
expect(asFragment()).toMatchSnapshot();
});
});
test('Placement bottom', async () => {
let isOpen = false;
const { asFragment, getByText } = render(
isOpen = false}
primaryButton={{
children: 'Primary button'
}}
>
Modal content
);
expect(asFragment()).toMatchSnapshot();
fireEvent.click(getByText('Trigger'));
await waitFor(() => {
expect(asFragment()).toMatchSnapshot();
});
});
test('Esc press', async () => {
let isOpen = false;
const { asFragment, getByText } = render(
isOpen = false}
primaryButton={{
children: 'Primary button'
}}
>
Modal content
);
fireEvent.keyDown(getByText('Trigger'), {
key: 'Escape',
code: 'Escape',
keyCode: 27,
charCode: 27
});
expect(asFragment()).toMatchSnapshot();
fireEvent.click(getByText('Trigger'));
await waitFor(() => {
expect(asFragment()).toMatchSnapshot();
});
});
test('Layout click', async () => {
const handleOpen = jest.fn();
const handleClose = jest.fn();
const { asFragment, getByText, getByRole } = render(
Modal content
);
expect(asFragment()).toMatchSnapshot();
fireEvent.click(getByText('Trigger'));
const dialog = getByRole('dialog');
fireEvent.click(dialog);
await waitFor(() => {
expect(asFragment()).toMatchSnapshot();
});
});
test('Header node', async () => {
const handleOpen = jest.fn();
const handleClose = jest.fn();
const { asFragment, getByText, getByRole } = render(
Modal header
)}
isOpen={true}
onClose={handleClose}
primaryButton={{
children: 'Primary button'
}}
>
Modal content
);
expect(asFragment()).toMatchSnapshot();
fireEvent.click(getByText('Trigger'));
const dialog = getByRole('dialog');
fireEvent.click(dialog);
await waitFor(() => {
expect(asFragment()).toMatchSnapshot();
});
});
test('isCloseIconShow', async () => {
const handleOpen = jest.fn();
const handleClose = jest.fn();
const { asFragment, getByText, getByRole } = render(
Modal content
);
expect(asFragment()).toMatchSnapshot();
fireEvent.click(getByText('Trigger'));
const dialog = getByRole('dialog');
fireEvent.click(dialog);
await waitFor(() => {
expect(asFragment()).toMatchSnapshot();
});
});
test('isOpen false no buttons', async () => {
const handleOpen = jest.fn();
const handleClose = jest.fn();
const { asFragment, getByText } = render(
Modal content
);
expect(asFragment()).toMatchSnapshot();
fireEvent.click(getByText('Trigger'));
await waitFor(() => {
expect(asFragment()).toMatchSnapshot();
});
});
test('isOpen false no buttons', async () => {
const handleOpen = jest.fn();
const handleClose = jest.fn();
const { asFragment, getByText } = render(
Modal content
);
expect(asFragment()).toMatchSnapshot();
fireEvent.click(getByText('Trigger'));
await waitFor(() => {
expect(asFragment()).toMatchSnapshot();
});
});