navigateToExternalLinkModal.spec.tsx 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import {act, renderGlobalModal, screen, userEvent} from 'sentry-test/reactTestingLibrary';
  2. import {openModal} from 'sentry/actionCreators/modal';
  3. import NavigateToExternalLinkModal from 'sentry/components/modals/navigateToExternalLinkModal';
  4. describe('NavigateToExternalLinkModal', function () {
  5. it('closes on cancel button click', async function () {
  6. const closeModal = jest.fn();
  7. const linkText = 'http://test-url.com';
  8. renderGlobalModal();
  9. act(() =>
  10. openModal(
  11. modalProps => <NavigateToExternalLinkModal {...modalProps} linkText={linkText} />,
  12. {onClose: closeModal}
  13. )
  14. );
  15. await userEvent.click(screen.getByRole('button', {name: 'Close Modal'}));
  16. expect(closeModal).toHaveBeenCalled();
  17. });
  18. it('should render with a valid URL', () => {
  19. const linkText = 'http://test-url.com';
  20. renderGlobalModal();
  21. act(() =>
  22. openModal(modalProps => (
  23. <NavigateToExternalLinkModal {...modalProps} linkText={linkText} />
  24. ))
  25. );
  26. const signUpButton = screen.getByRole('button', {name: 'Continue'});
  27. const link = screen.getByText(linkText);
  28. expect(signUpButton).toBeInTheDocument();
  29. expect(link).toBeInTheDocument();
  30. });
  31. it('navigates on continue button click', async function () {
  32. const closeModal = jest.fn();
  33. const linkText = 'http://test-url.com';
  34. renderGlobalModal();
  35. window.open = jest.fn().mockImplementation(() => true);
  36. act(() =>
  37. openModal(
  38. modalProps => <NavigateToExternalLinkModal {...modalProps} linkText={linkText} />,
  39. {onClose: closeModal}
  40. )
  41. );
  42. const button = screen.getByRole('button', {name: 'Continue'});
  43. expect(button).toBeInTheDocument();
  44. expect(button).toHaveAttribute('href', linkText);
  45. await userEvent.click(button);
  46. expect(closeModal).toHaveBeenCalled();
  47. });
  48. });