useRouteAnalyticsEventNames.spec.tsx 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import {render} from 'sentry-test/reactTestingLibrary';
  2. import {RouteAnalyticsContext} from 'sentry/views/routeAnalyticsContextProvider';
  3. import useRouteAnalyticsEventNames from './useRouteAnalyticsEventNames';
  4. function TestComponent({eventKey, eventName}: {eventKey: string; eventName: string}) {
  5. useRouteAnalyticsEventNames(eventKey, eventName);
  6. return <div>hi</div>;
  7. }
  8. describe('useRouteAnalyticsEventNames', function () {
  9. it('disables analytics', function () {
  10. const setEventNames = jest.fn();
  11. const getComponent = (
  12. eventKey: string,
  13. eventName: string,
  14. extraContext?: Record<string, any>
  15. ) => (
  16. <RouteAnalyticsContext.Provider
  17. value={{
  18. setDisableRouteAnalytics: jest.fn(),
  19. setRouteAnalyticsParams: jest.fn(),
  20. setOrganization: jest.fn(),
  21. setEventNames,
  22. previousUrl: '',
  23. ...extraContext,
  24. }}
  25. >
  26. <TestComponent {...{eventKey, eventName}} />
  27. </RouteAnalyticsContext.Provider>
  28. );
  29. const {rerender} = render(getComponent('a', 'b'));
  30. expect(setEventNames).toHaveBeenCalledWith('a', 'b');
  31. setEventNames.mockClear();
  32. rerender(getComponent('a', 'b'));
  33. // should still be called 0 times because previousURL the same
  34. expect(setEventNames).toHaveBeenCalledTimes(0);
  35. rerender(getComponent('a', 'b', {previousUrl: 'something-else'}));
  36. expect(setEventNames).toHaveBeenCalledWith('a', 'b');
  37. });
  38. });