import 'test/matchMedia.mock'; import React from 'react'; import { render, fireEvent } from '@testing-library/react'; import '@testing-library/jest-dom/extend-expect'; import DialogTemplate from './DialogTemplate'; import { Dialog } from '@radix-ui/react-dialog'; import { RecoilRoot } from 'recoil'; describe('DialogTemplate', () => { let mockSelectHandler; beforeEach(() => { mockSelectHandler = jest.fn(); }); it('renders correctly with all props', () => { const { getByText } = render( { return; }} > Main Content} buttons={} leftButtons={} selection={{ selectHandler: mockSelectHandler, selectText: 'Select' }} /> , ); expect(getByText('Test Dialog')).toBeInTheDocument(); expect(getByText('Test Description')).toBeInTheDocument(); expect(getByText('Main Content')).toBeInTheDocument(); expect(getByText('Button')).toBeInTheDocument(); expect(getByText('Left Button')).toBeInTheDocument(); expect(getByText('Cancel')).toBeInTheDocument(); expect(getByText('Select')).toBeInTheDocument(); }); it('renders correctly without optional props', () => { const { queryByText } = render( { return; }} > , ); expect(queryByText('Test Dialog')).toBeNull(); expect(queryByText('Test Description')).not.toBeInTheDocument(); expect(queryByText('Main Content')).not.toBeInTheDocument(); expect(queryByText('Button')).not.toBeInTheDocument(); expect(queryByText('Left Button')).not.toBeInTheDocument(); expect(queryByText('Cancel')).not.toBeInTheDocument(); expect(queryByText('Select')).not.toBeInTheDocument(); }); it('calls selectHandler when the select button is clicked', () => { const { getByText } = render( { return; }} > , ); fireEvent.click(getByText('Select')); expect(mockSelectHandler).toHaveBeenCalled(); }); });