confirmDelete.spec.tsx 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. import {
  2. render,
  3. renderGlobalModal,
  4. screen,
  5. userEvent,
  6. } from 'sentry-test/reactTestingLibrary';
  7. import ConfirmDelete from 'sentry/components/confirmDelete';
  8. import ModalStore from 'sentry/stores/modalStore';
  9. describe('ConfirmDelete', function () {
  10. afterEach(() => {
  11. ModalStore.reset();
  12. });
  13. it('renders', async function () {
  14. const mock = jest.fn();
  15. render(
  16. <ConfirmDelete message="Are you sure?" onConfirm={mock} confirmInput="CoolOrg">
  17. <button>Confirm?</button>
  18. </ConfirmDelete>
  19. );
  20. renderGlobalModal();
  21. await userEvent.click(screen.getByRole('button'));
  22. });
  23. it('confirm button is disabled and bypass prop is false when modal opens', async function () {
  24. const mock = jest.fn();
  25. render(
  26. <ConfirmDelete message="Are you sure?" onConfirm={mock} confirmInput="CoolOrg">
  27. <button>Confirm?</button>
  28. </ConfirmDelete>
  29. );
  30. renderGlobalModal();
  31. await userEvent.click(screen.getByRole('button'));
  32. expect(screen.getByRole('button', {name: 'Confirm'})).toBeDisabled();
  33. });
  34. it('confirm button stays disabled with non-matching input', async function () {
  35. const mock = jest.fn();
  36. render(
  37. <ConfirmDelete message="Are you sure?" onConfirm={mock} confirmInput="CoolOrg">
  38. <button>Confirm?</button>
  39. </ConfirmDelete>
  40. );
  41. renderGlobalModal();
  42. await userEvent.click(screen.getByRole('button'));
  43. await userEvent.type(screen.getByPlaceholderText('CoolOrg'), 'Cool');
  44. expect(screen.getByRole('button', {name: 'Confirm'})).toBeDisabled();
  45. });
  46. it('confirm button is enabled when confirm input matches', async function () {
  47. const mock = jest.fn();
  48. render(
  49. <ConfirmDelete message="Are you sure?" onConfirm={mock} confirmInput="CoolOrg">
  50. <button>Confirm?</button>
  51. </ConfirmDelete>
  52. );
  53. renderGlobalModal();
  54. await userEvent.click(screen.getByRole('button'));
  55. await userEvent.type(screen.getByPlaceholderText('CoolOrg'), 'CoolOrg');
  56. expect(screen.getByRole('button', {name: 'Confirm'})).toBeEnabled();
  57. await userEvent.click(screen.getByRole('button', {name: 'Confirm'}));
  58. expect(mock).toHaveBeenCalled();
  59. expect(mock.mock.calls).toHaveLength(1);
  60. });
  61. });