// 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 ModalContext from '../../../../src/components/ui/Modal/ModalContext';
import ModalHeader from '../../../../src/components/ui/Modal/ModalHeader';
import lightTheme from '../../../../src/theme/light';
import { renderWithTheme } from '../../../test-helpers';
describe('ModalHeader', () => {
it('renders a header', () => {
const component = ;
const { getByText } = renderWithTheme(lightTheme, component);
const el = getByText('Test Header');
expect(el).toBeInTheDocument();
});
it('renders a close button if displayClose !== false and "dismissable is true', () => {
const onClose = jest.fn();
const labelID = 'test-label';
const testContext = { onClose, labelID, dismissible: true };
const component = (
);
const { getByTestId } = renderWithTheme(lightTheme, component);
const closeButton = getByTestId('button');
expect(closeButton).toBeInTheDocument();
});
it('calls the onClose function from the context provider', () => {
const onClose = jest.fn();
const labelID = 'test-label';
const testContext = { onClose, labelID, dismissible: true };
const component = (
);
const { getByTestId } = renderWithTheme(lightTheme, component);
const closeButton = getByTestId('button');
fireEvent.click(closeButton);
expect(component.props.value.onClose).toHaveBeenCalled();
});
it('does not render a close button if "dismissible" is false', () => {
const onClose = jest.fn();
const labelID = 'test-label';
const testContext = { onClose, labelID, dismissible: false };
const component = (
);
const { queryAllByText } = renderWithTheme(lightTheme, component);
const closeButton = queryAllByText('close');
expect(closeButton).toHaveLength(0);
});
});