useRouteAnalyticsParams.spec.tsx 1.3 KB

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