Skip to content

Commit a418ba6

Browse files
authored
feat(AU-1894): send track event when requesting translation (openedx#1360)
* feat(AU-1894): send track event when requesting translation * feat: add source != target language condition
1 parent 2da930f commit a418ba6

File tree

2 files changed

+36
-0
lines changed

2 files changed

+36
-0
lines changed

plugins/UnitTranslationPlugin/translation-selection/index.jsx

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import React, { useContext, useEffect } from 'react';
22
import PropTypes from 'prop-types';
33

4+
import { sendTrackEvent } from '@edx/frontend-platform/analytics';
45
import { AppContext } from '@edx/frontend-platform/react';
56
import { IconButton, Icon, ProductTour } from '@openedx/paragon';
67
import { Language } from '@openedx/paragon/icons';
@@ -30,6 +31,20 @@ const TranslationSelection = ({
3031
language,
3132
});
3233

34+
useEffect(() => {
35+
if ((courseId && language && selectedLanguage && unitId && userId) && (language !== selectedLanguage)) {
36+
const eventName = 'edx.whole_course_translations.translation_requested';
37+
const eventProperties = {
38+
courseId,
39+
sourceLanguage: language,
40+
targetLanguage: selectedLanguage,
41+
unitId,
42+
userId,
43+
};
44+
sendTrackEvent(eventName, eventProperties);
45+
}
46+
}, [courseId, language, selectedLanguage, unitId, userId]);
47+
3348
useEffect(() => {
3449
dispatch(
3550
registerOverrideMethod({

plugins/UnitTranslationPlugin/translation-selection/index.test.jsx

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
1+
import { sendTrackEvent } from '@edx/frontend-platform/analytics';
12
import { shallow } from '@edx/react-unit-test-utils';
23

34
import TranslationSelection from './index';
5+
import { initializeTestStore, render } from '../../../src/setupTest';
46

57
jest.mock('react', () => ({
68
...jest.requireActual('react'),
@@ -38,6 +40,7 @@ jest.mock('./useSelectLanguage', () => () => ({
3840
setSelectedLanguage: jest.fn().mockName('setSelectedLanguage'),
3941
}));
4042
jest.mock('../feedback-widget', () => 'FeedbackWidget');
43+
jest.mock('@edx/frontend-platform/analytics');
4144

4245
describe('<TranslationSelection />', () => {
4346
const props = {
@@ -60,4 +63,22 @@ describe('<TranslationSelection />', () => {
6063
const wrapper = shallow(<TranslationSelection {...props} />);
6164
expect(wrapper.snapshot).toMatchSnapshot();
6265
});
66+
it('does not send track event when source != target language', async () => {
67+
await initializeTestStore();
68+
render(<TranslationSelection {...props} />);
69+
expect(sendTrackEvent).not.toHaveBeenCalled();
70+
});
71+
it('sends track event when source != target language', async () => {
72+
await initializeTestStore();
73+
render(<TranslationSelection {...props} />);
74+
const eventName = 'edx.whole_course_translations.translation_requested';
75+
const eventProperties = {
76+
courseId: props.courseId,
77+
sourceLanguage: props.language,
78+
targetLanguage: 'en',
79+
unitId: props.unitId,
80+
userId: '123',
81+
};
82+
expect(sendTrackEvent).not.toHaveBeenCalledWith(eventName, eventProperties);
83+
});
6384
});

0 commit comments

Comments
 (0)