trackAmplitudeEvent.spec.tsx 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import * as Amplitude from '@amplitude/analytics-browser';
  2. import {ConfigFixture} from 'sentry-fixture/config';
  3. import {UserFixture} from 'sentry-fixture/user';
  4. import ConfigStore from 'sentry/stores/configStore';
  5. import trackAmplitudeEvent from 'getsentry/utils/trackAmplitudeEvent';
  6. jest.unmock('getsentry/utils/trackAmplitudeEvent');
  7. describe('trackAmplitudeEvent', function () {
  8. const user = UserFixture({});
  9. const data = {foo: 'bar'};
  10. const eventName = 'My Event';
  11. const orgId = 123;
  12. beforeEach(function () {
  13. ConfigStore.loadInitialData(
  14. ConfigFixture({
  15. enableAnalytics: true,
  16. user,
  17. })
  18. );
  19. });
  20. afterEach(function () {
  21. (Amplitude.setUserId as jest.Mock).mockClear();
  22. (Amplitude.track as jest.Mock).mockClear();
  23. (Amplitude.setGroup as jest.Mock).mockClear();
  24. });
  25. it('organization id is a number calls track', function () {
  26. trackAmplitudeEvent(eventName, orgId, data);
  27. expect(Amplitude.setUserId).toHaveBeenCalledWith(user.id);
  28. expect(Amplitude.track).toHaveBeenCalledWith(eventName, data, undefined);
  29. expect(Amplitude.setGroup).toHaveBeenCalledWith('organization_id', orgId.toString());
  30. });
  31. it('two track calls only call setGroup once', function () {
  32. trackAmplitudeEvent(eventName, 454, data);
  33. trackAmplitudeEvent(eventName, 454, data);
  34. expect(Amplitude.track).toHaveBeenCalledTimes(2);
  35. expect(Amplitude.setGroup).toHaveBeenCalledTimes(1);
  36. });
  37. it('organization id is null calls track', function () {
  38. trackAmplitudeEvent(eventName, null, data);
  39. expect(Amplitude.track).toHaveBeenCalledWith(eventName, data, undefined);
  40. expect(Amplitude.setGroup).toHaveBeenCalledWith('organization_id', '');
  41. });
  42. it('organization id is undefined does not call track', function () {
  43. trackAmplitudeEvent(eventName, undefined, data);
  44. expect(Amplitude.track).not.toHaveBeenCalled();
  45. });
  46. it('enableAnalytics is false', function () {
  47. ConfigStore.set('enableAnalytics', false);
  48. trackAmplitudeEvent(eventName, orgId, data);
  49. expect(Amplitude.track).not.toHaveBeenCalled();
  50. });
  51. });