Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'spec/frontend/tracking/internal_events_spec.js')
-rw-r--r--spec/frontend/tracking/internal_events_spec.js58
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);
+ });
+ });
+ });
});