playerDOMAlert.spec.tsx 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import {render, screen, userEvent, waitFor} from 'sentry-test/reactTestingLibrary';
  2. import {resetMockDate, setMockDate} from 'sentry-test/utils';
  3. import localStorage from 'sentry/utils/localStorage';
  4. import PlayerDOMAlert from './playerDOMAlert';
  5. jest.mock('sentry/utils/localStorage');
  6. const mockGetItem = jest.mocked(localStorage.getItem);
  7. const now = new Date('2020-01-01');
  8. describe('PlayerDOMAlert', () => {
  9. beforeEach(() => {
  10. mockGetItem.mockReset();
  11. setMockDate(now);
  12. });
  13. afterEach(() => {
  14. resetMockDate();
  15. });
  16. it('should render the alert when local storage key is not set', () => {
  17. render(<PlayerDOMAlert />);
  18. expect(screen.getByTestId('player-dom-alert')).toBeVisible();
  19. });
  20. it('should not render the alert when the local storage key is set', () => {
  21. mockGetItem.mockImplementationOnce(() => now.getTime().toString());
  22. render(<PlayerDOMAlert />);
  23. expect(screen.queryByTestId('player-dom-alert')).not.toBeInTheDocument();
  24. });
  25. it('should be dismissable', async () => {
  26. render(<PlayerDOMAlert />);
  27. expect(screen.getByTestId('player-dom-alert')).toBeVisible();
  28. await userEvent.click(screen.getByLabelText('Close Alert'));
  29. expect(screen.queryByTestId('player-dom-alert')).not.toBeInTheDocument();
  30. await waitFor(() =>
  31. expect(localStorage.setItem).toHaveBeenCalledWith(
  32. 'replay-player-dom-alert-dismissed',
  33. '"1577836800000"'
  34. )
  35. );
  36. });
  37. });