import * as React from 'react'; import { Button } from '@/components/ui/button'; import { useDisclosure } from '@/hooks/use-disclosure'; import { rtlRender, screen, userEvent, waitFor } from '@/testing/test-utils'; import { Dialog, DialogContent, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, } from '../dialog'; const openButtonText = 'Open Modal'; const cancelButtonText = 'Cancel'; const titleText = 'Modal Title'; const TestDialog = () => { const { close, open, isOpen } = useDisclosure(); const cancelButtonRef = React.useRef(null); return ( { if (!isOpen) { close(); } else { open(); } }} > {titleText} ); }; test('should handle basic dialog flow', async () => { rtlRender(); expect(screen.queryByText(titleText)).not.toBeInTheDocument(); await userEvent.click(screen.getByRole('button', { name: openButtonText })); expect(await screen.findByText(titleText)).toBeInTheDocument(); await userEvent.click(screen.getByRole('button', { name: cancelButtonText })); await waitFor(() => expect(screen.queryByText(titleText)).not.toBeInTheDocument(), ); });