Spaces:
Runtime error
Runtime error
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'; | |
describe('DialogTemplate', () => { | |
let mockSelectHandler; | |
beforeEach(() => { | |
mockSelectHandler = jest.fn(); | |
}); | |
it('renders correctly with all props', () => { | |
const { getByText } = render( | |
<Dialog open onOpenChange={() => {}}> | |
<DialogTemplate | |
title="Test Dialog" | |
description="Test Description" | |
main={<div>Main Content</div>} | |
buttons={<button>Button</button>} | |
leftButtons={<button>Left Button</button>} | |
selection={{ selectHandler: mockSelectHandler, selectText: 'Select' }} | |
/> | |
</Dialog>, | |
); | |
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 { getByText, queryByText } = render( | |
<Dialog open onOpenChange={() => {}}> | |
<DialogTemplate title="Test Dialog" /> | |
</Dialog>, | |
); | |
expect(getByText('Test Dialog')).toBeInTheDocument(); | |
expect(queryByText('Test Description')).not.toBeInTheDocument(); | |
expect(queryByText('Main Content')).not.toBeInTheDocument(); | |
expect(queryByText('Button')).not.toBeInTheDocument(); | |
expect(queryByText('Left Button')).not.toBeInTheDocument(); | |
expect(getByText('Cancel')).toBeInTheDocument(); | |
expect(queryByText('Select')).not.toBeInTheDocument(); | |
}); | |
it('calls selectHandler when the select button is clicked', () => { | |
const { getByText } = render( | |
<Dialog open onOpenChange={() => {}}> | |
<DialogTemplate | |
title="Test Dialog" | |
selection={{ selectHandler: mockSelectHandler, selectText: 'Select' }} | |
/> | |
</Dialog>, | |
); | |
fireEvent.click(getByText('Select')); | |
expect(mockSelectHandler).toHaveBeenCalled(); | |
}); | |
}); | |