diff options
Diffstat (limited to 'spec/frontend/tracking/internal_events_spec.js')
-rw-r--r-- | spec/frontend/tracking/internal_events_spec.js | 58 |
1 files changed, 53 insertions, 5 deletions
diff --git a/spec/frontend/tracking/internal_events_spec.js b/spec/frontend/tracking/internal_events_spec.js index ad2ffa7cef4..ca244c25b06 100644 --- a/spec/frontend/tracking/internal_events_spec.js +++ b/spec/frontend/tracking/internal_events_spec.js @@ -2,12 +2,16 @@ import API from '~/api'; import { mockTracking } from 'helpers/tracking_helper'; import { shallowMountExtended } from 'helpers/vue_test_utils_helper'; import InternalEvents from '~/tracking/internal_events'; -import { GITLAB_INTERNAL_EVENT_CATEGORY, SERVICE_PING_SCHEMA } from '~/tracking/constants'; +import { + GITLAB_INTERNAL_EVENT_CATEGORY, + SERVICE_PING_SCHEMA, + LOAD_INTERNAL_EVENTS_SELECTOR, +} from '~/tracking/constants'; import * as utils from '~/tracking/utils'; import { Tracker } from '~/tracking/tracker'; jest.mock('~/api', () => ({ - trackRedisHllUserEvent: jest.fn(), + trackInternalEvent: jest.fn(), })); jest.mock('~/tracking/utils', () => ({ @@ -19,13 +23,13 @@ Tracker.enabled = jest.fn(); describe('InternalEvents', () => { describe('track_event', () => { - it('track_event calls trackRedisHllUserEvent with correct arguments', () => { + it('track_event calls API.trackInternalEvent with correct arguments', () => { const event = 'TestEvent'; InternalEvents.track_event(event); - expect(API.trackRedisHllUserEvent).toHaveBeenCalledTimes(1); - expect(API.trackRedisHllUserEvent).toHaveBeenCalledWith(event); + expect(API.trackInternalEvent).toHaveBeenCalledTimes(1); + expect(API.trackInternalEvent).toHaveBeenCalledWith(event); }); it('track_event calls tracking.event functions with correct arguments', () => { @@ -97,4 +101,48 @@ describe('InternalEvents', () => { expect(result).toEqual({ name: 'click', func: expect.any(Function) }); }); }); + + describe('trackInternalLoadEvents', () => { + let querySelectorAllMock; + let mockElements; + const action = 'i_devops_action'; + + beforeEach(() => { + Tracker.enabled.mockReturnValue(true); + querySelectorAllMock = jest.fn(); + document.querySelectorAll = querySelectorAllMock; + }); + + it('should return an empty array if Tracker is not enabled', () => { + Tracker.enabled.mockReturnValue(false); + const result = InternalEvents.trackInternalLoadEvents(); + expect(result).toEqual([]); + }); + + describe('tracking', () => { + let trackEventSpy; + beforeEach(() => { + trackEventSpy = jest.spyOn(InternalEvents, 'track_event'); + }); + + it('should track event if action exists', () => { + mockElements = [{ dataset: { eventTracking: action, eventTrackingLoad: true } }]; + querySelectorAllMock.mockReturnValue(mockElements); + + const result = InternalEvents.trackInternalLoadEvents(); + expect(trackEventSpy).toHaveBeenCalledWith(action); + expect(trackEventSpy).toHaveBeenCalledTimes(1); + expect(querySelectorAllMock).toHaveBeenCalledWith(LOAD_INTERNAL_EVENTS_SELECTOR); + expect(result).toEqual(mockElements); + }); + + it('should not track event if action is not present', () => { + mockElements = [{ dataset: { eventTracking: undefined, eventTrackingLoad: true } }]; + querySelectorAllMock.mockReturnValue(mockElements); + + InternalEvents.trackInternalLoadEvents(); + expect(trackEventSpy).toHaveBeenCalledTimes(0); + }); + }); + }); }); |