import React from 'react';
import { render, screen, waitForElementToBeRemoved } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
import { ConfirmProvider, useConfirm } from './Confirm';
const ConfirmComponent: React.FC = () => {
const { confirm } = useConfirm();
return (
);
};
describe('Dialog', () => {
it('should show the confirmation and hide it on confirm/cancel', async () => {
render(
);
// Should not show by default
expect(screen.queryByText('Are you sure?')).not.toBeInTheDocument();
// Should show after clicking button
await userEvent.click(screen.getByRole('button', { name: 'Click Me' }));
await screen.findByText('Are you sure?');
// Should hide after clicking Yes
await userEvent.click(screen.getByRole('button', { name: 'Yes' }));
await waitForElementToBeRemoved(() => screen.queryByText('Are you sure?'));
// Should show after clicking button
await userEvent.click(screen.getByRole('button', { name: 'Click Me' }));
await screen.findByText('Are you sure?');
// Should hide after clicking Cancel
await userEvent.click(screen.getByRole('button', { name: 'Cancel' }));
await waitForElementToBeRemoved(() => screen.queryByText('Are you sure?'));
});
});