// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
import '@testing-library/jest-dom';
import { fireEvent } from '@testing-library/dom';
import React from 'react';
import Modal from '../../../../src/components/ui/Modal';
import lightTheme from '../../../../src/theme/light';
import { renderWithTheme } from '../../../test-helpers';
describe('Modal', () => {
it('renders a modal', () => {
const component = (
Dummy Content
);
const { getByTestId } = renderWithTheme(lightTheme, component);
const el = getByTestId('modal');
expect(el).toBeInTheDocument();
});
it('Pressing ESC closes the modal if onClose is passed', () => {
const component = (
Dummy Content
);
renderWithTheme(lightTheme, component);
fireEvent.keyDown(document.activeElement || document.body, {
key: 'escape',
keyCode: 27,
});
expect(component.props.onClose).toHaveBeenCalled();
});
it(`Pressing non ESC keystrokes doesn't trigger modal onClose fn`, () => {
const component = (
Dummy Content
);
renderWithTheme(lightTheme, component);
fireEvent.keyDown(document.activeElement || document.body, {
key: 'space',
keyCode: 32,
});
expect(component.props.onClose).toBeCalledTimes(0);
});
it(`will not close the modal using ESC key if "dismissible" prop is set to "false"`, () => {
const component = (
Dummy Content
);
renderWithTheme(lightTheme, component);
fireEvent.keyDown(document.activeElement || document.body, {
key: 'space',
keyCode: 32,
});
expect(component.props.onClose).toBeCalledTimes(0);
});
it(`will close the modal by clicking the background if "dismissible" prop is set to "false"`, () => {
const component = (
Dummy Content
);
const { getByTestId } = renderWithTheme(lightTheme, component);
const bgd = getByTestId('modal');
fireEvent.click(bgd);
expect(component.props.onClose).toBeCalledTimes(0);
});
});