playerDOMAlert.spec.tsx 1.3 KB

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