summaryrefslogtreecommitdiff
path: root/spec/frontend/design_management/utils/tracking_spec.js
blob: 9fa5eae55b3b987b32016490bb61c394a6f140b8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import { mockTracking } from 'helpers/tracking_helper';
import { trackDesignDetailView } from '~/design_management/utils/tracking';

function getTrackingSpy(key) {
  return mockTracking(key, undefined, jest.spyOn);
}

describe('Tracking Events', () => {
  describe('trackDesignDetailView', () => {
    const eventKey = 'projects:issues:design';
    const eventName = 'design_viewed';

    it('trackDesignDetailView fires a tracking event when called', () => {
      const trackingSpy = getTrackingSpy(eventKey);

      trackDesignDetailView();

      expect(trackingSpy).toHaveBeenCalledWith(
        eventKey,
        eventName,
        expect.objectContaining({
          label: eventName,
          value: {
            'internal-object-refrerer': '',
            'design-collection-owner': '',
            'design-version-number': 1,
            'design-is-current-version': false,
          },
        }),
      );
    });

    it('trackDesignDetailView allows to customize the value payload', () => {
      const trackingSpy = getTrackingSpy(eventKey);

      trackDesignDetailView('from-a-test', 'test', 100, true);

      expect(trackingSpy).toHaveBeenCalledWith(
        eventKey,
        eventName,
        expect.objectContaining({
          label: eventName,
          value: {
            'internal-object-refrerer': 'from-a-test',
            'design-collection-owner': 'test',
            'design-version-number': 100,
            'design-is-current-version': true,
          },
        }),
      );
    });
  });
});