Skip to content
代码片段 群组 项目
未验证 提交 b00a2295 编辑于 作者: Lee Tickett's avatar Lee Tickett 提交者: GitLab
浏览文件

Merge branch '357915-add-tests-for-track-metrics-calls' into 'master'

Add complementary tests for diffs to assert track metrics calls

See merge request https://gitlab.com/gitlab-org/gitlab/-/merge_requests/164645



Merged-by: default avatarLee Tickett <ltickett@gitlab.com>
Approved-by: default avatarMarina Mosti <mmosti@gitlab.com>
Approved-by: default avatarOlena Horal-Koretska <ohoralkoretska@gitlab.com>
Reviewed-by: default avatarMarina Mosti <mmosti@gitlab.com>
Co-authored-by: default avatarWilson Pinto <wilsonpinto360@gmail.com>
No related branches found
No related tags found
无相关合并请求
......@@ -5,6 +5,7 @@ import Vue, { nextTick } from 'vue';
import VueApollo from 'vue-apollo';
// eslint-disable-next-line no-restricted-imports
import Vuex from 'vuex';
import api from '~/api';
import getMRCodequalityAndSecurityReports from '~/diffs/components/graphql/get_mr_codequality_and_security_reports.query.graphql';
import createMockApollo from 'helpers/mock_apollo_helper';
import setWindowLocation from 'helpers/set_window_location_helper';
......@@ -46,6 +47,8 @@ const UPDATED_COMMIT_URL = `${TEST_HOST}/COMMIT/NEW`;
const ENDPOINT_BATCH_URL = `${TEST_HOST}/diff/endpointBatch`;
const ENDPOINT_METADATA_URL = `${TEST_HOST}/diff/endpointMetadata`;
jest.mock('~/api.js');
Vue.use(Vuex);
Vue.use(VueApollo);
......@@ -1112,4 +1115,73 @@ describe('diffs/components/app', () => {
expect(rootWrapper.emitted(BV_HIDE_TOOLTIP)).toStrictEqual(undefined);
});
});
describe('track "trackRedisHllUserEvent" and "trackRedisCounterEvent" metrics', () => {
let mockGetTime;
beforeEach(() => {
jest.clearAllMocks();
mockGetTime = jest.spyOn(Date.prototype, 'getTime');
});
afterEach(() => {
mockGetTime.mockRestore();
});
const simulateKeydown = async (key, time) => {
await nextTick();
mockGetTime.mockReturnValue(time);
Mousetrap.trigger(key);
};
it('should not track metrics if keydownTime is not set', async () => {
createComponent({ props: { shouldShow: true } });
await nextTick();
window.dispatchEvent(new Event('blur'));
expect(api.trackRedisHllUserEvent).not.toHaveBeenCalled();
expect(api.trackRedisCounterEvent).not.toHaveBeenCalled();
});
it('should track metrics if delta is between 0 and 1000ms', async () => {
createComponent({ props: { shouldShow: true } });
// delta 500 ms
await simulateKeydown('mod+f', 1000);
mockGetTime.mockReturnValue(1500);
window.dispatchEvent(new Event('blur'));
expect(api.trackRedisHllUserEvent).toHaveBeenCalledWith('i_code_review_user_searches_diff');
expect(api.trackRedisCounterEvent).toHaveBeenCalledWith('diff_searches');
});
it('should not track metrics if delta is greater than or equal to 1000ms', async () => {
createComponent({ props: { shouldShow: true } });
// delta 1050 ms
await simulateKeydown('mod+f', 1000);
mockGetTime.mockReturnValue(2050);
window.dispatchEvent(new Event('blur'));
expect(api.trackRedisHllUserEvent).not.toHaveBeenCalled();
expect(api.trackRedisCounterEvent).not.toHaveBeenCalled();
});
it('should not track metrics if delta is negative', async () => {
createComponent({ props: { shouldShow: true } });
// delta -500 ms
await simulateKeydown('mod+f', 1500);
mockGetTime.mockReturnValue(1000);
window.dispatchEvent(new Event('blur'));
expect(api.trackRedisHllUserEvent).not.toHaveBeenCalled();
expect(api.trackRedisCounterEvent).not.toHaveBeenCalled();
});
});
});
0% 加载中 .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册