useDisableRouteAnalytics.spec.tsx 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import {render} from 'sentry-test/reactTestingLibrary';
  2. import {RouteAnalyticsContext} from 'sentry/views/routeAnalyticsContextProvider';
  3. import useDisableRouteAnalytics from './useDisableRouteAnalytics';
  4. describe('useDisableRouteAnalytics', function () {
  5. const setDisableRouteAnalytics = jest.fn();
  6. const otherFns = {
  7. setRouteAnalyticsParams: jest.fn(),
  8. setOrganization: jest.fn(),
  9. setEventNames: jest.fn(),
  10. };
  11. afterEach(() => {
  12. jest.clearAllMocks();
  13. });
  14. it('disables analytics', function () {
  15. function TestComponent() {
  16. useDisableRouteAnalytics();
  17. return <div>hi</div>;
  18. }
  19. const getComponent = ({previousUrl = ''}: {previousUrl?: string} = {}) => (
  20. <RouteAnalyticsContext.Provider
  21. value={{
  22. ...otherFns,
  23. setDisableRouteAnalytics,
  24. previousUrl,
  25. }}
  26. >
  27. <TestComponent />
  28. </RouteAnalyticsContext.Provider>
  29. );
  30. const {rerender} = render(getComponent({}));
  31. expect(setDisableRouteAnalytics).toHaveBeenCalledWith(true);
  32. setDisableRouteAnalytics.mockClear();
  33. rerender(getComponent());
  34. // should still be called 0 times because previousURL the same
  35. expect(setDisableRouteAnalytics).toHaveBeenCalledTimes(0);
  36. rerender(getComponent({previousUrl: 'something-else'}));
  37. expect(setDisableRouteAnalytics).toHaveBeenCalledWith(true);
  38. });
  39. it('re-enables analytics', function () {
  40. function TestComponent({disabled}: {disabled: boolean}) {
  41. useDisableRouteAnalytics(disabled);
  42. return <div>hi</div>;
  43. }
  44. const getComponent = ({disabled}: {disabled: boolean}) => (
  45. <RouteAnalyticsContext.Provider
  46. value={{
  47. ...otherFns,
  48. setDisableRouteAnalytics,
  49. previousUrl: '',
  50. }}
  51. >
  52. <TestComponent disabled={disabled} />
  53. </RouteAnalyticsContext.Provider>
  54. );
  55. const {rerender} = render(getComponent({disabled: true}));
  56. expect(setDisableRouteAnalytics).toHaveBeenCalledWith(true);
  57. setDisableRouteAnalytics.mockClear();
  58. rerender(getComponent({disabled: false}));
  59. expect(setDisableRouteAnalytics).toHaveBeenCalledWith(false);
  60. });
  61. });