summaryrefslogtreecommitdiff
path: root/spec/frontend/design_management_legacy/utils/tracking_spec.js
blob: a59cf80c906f1f0cb514b31be0f921b2637ad23b (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
54
55
56
57
58
59
import { mockTracking } from 'helpers/tracking_helper';
import { trackDesignDetailView } from '~/design_management_legacy/utils/tracking';

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

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

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

      trackDesignDetailView();

      expect(trackingSpy).toHaveBeenCalledWith(
        eventKey,
        eventName,
        expect.objectContaining({
          label: eventName,
          context: {
            schema: expect.any(String),
            data: {
              'design-version-number': 1,
              'design-is-current-version': false,
              'internal-object-referrer': '',
              'design-collection-owner': '',
            },
          },
        }),
      );
    });

    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,
          context: {
            schema: expect.any(String),
            data: {
              'design-version-number': 100,
              'design-is-current-version': true,
              'internal-object-referrer': 'from-a-test',
              'design-collection-owner': 'test',
            },
          },
        }),
      );
    });
  });
});