diff --git a/src/containers/UnenrollConfirmModal/components/ReasonPane.jsx b/src/containers/UnenrollConfirmModal/components/ReasonPane.jsx
index 1f40f77..8ab0977 100644
--- a/src/containers/UnenrollConfirmModal/components/ReasonPane.jsx
+++ b/src/containers/UnenrollConfirmModal/components/ReasonPane.jsx
@@ -13,6 +13,7 @@ import messages from './messages';
export const ReasonPane = ({
reason,
+ handleSubmit,
}) => {
const { formatMessage } = useIntl();
const option = (key) => (
@@ -40,7 +41,7 @@ export const ReasonPane = ({
-
Submit
diff --git a/src/containers/UnenrollConfirmModal/hooks/index.js b/src/containers/UnenrollConfirmModal/hooks/index.js
index 5a06201..a0ef637 100644
--- a/src/containers/UnenrollConfirmModal/hooks/index.js
+++ b/src/containers/UnenrollConfirmModal/hooks/index.js
@@ -28,10 +28,6 @@ export const useUnenrollData = ({ closeModal, dispatch, cardId }) => {
reason.submittedReason,
isEntitlement,
);
- const handleSubmit = () => {
- handleTrackReasons();
- dispatch(thunkActions.app.unenrollFromCourse(cardId, reason.submittedReason));
- };
let modalState;
if (isConfirmed) {
@@ -40,6 +36,10 @@ export const useUnenrollData = ({ closeModal, dispatch, cardId }) => {
modalState = modalStates.confirm;
}
+ const handleSubmitReason = () => {
+ handleTrackReasons();
+ dispatch(thunkActions.app.unenrollFromCourse(cardId, reason.submittedReason));
+ };
const close = () => {
closeModal();
setIsConfirmed(false);
@@ -57,7 +57,7 @@ export const useUnenrollData = ({ closeModal, dispatch, cardId }) => {
close,
closeAndRefresh,
modalState,
- handleSubmit,
+ handleSubmitReason,
};
};
diff --git a/src/containers/UnenrollConfirmModal/index.jsx b/src/containers/UnenrollConfirmModal/index.jsx
index dc66dd2..1e159d1 100644
--- a/src/containers/UnenrollConfirmModal/index.jsx
+++ b/src/containers/UnenrollConfirmModal/index.jsx
@@ -27,6 +27,7 @@ export const UnenrollConfirmModal = ({
closeAndRefresh,
close,
modalState,
+ handleSubmitReason,
} = useUnenrollData({ dispatch, closeModal, cardId });
const showFullscreen = modalState === modalStates.reason;
return (
@@ -48,7 +49,7 @@ export const UnenrollConfirmModal = ({
)}
{(modalState === modalStates.reason) && (
-
+
)}
diff --git a/src/tracking/trackers/course.js b/src/tracking/trackers/course.js
index 8b44be7..aa5262c 100644
--- a/src/tracking/trackers/course.js
+++ b/src/tracking/trackers/course.js
@@ -59,8 +59,8 @@ export const enterCourseClicked = (...args) => (
module.courseLinkTracker(eventNames.enterCourseClicked)(...args));
export const upgradeClicked = (courseId, href) => createLinkTracker(
() => {
- module.upgradeButtonClicked(courseId);
- module.upgradeButtonClickedUpsell(courseId);
+ module.upgradeButtonClicked(courseId)();
+ module.upgradeButtonClickedUpsell(courseId)();
api.logUpgrade({ courseId });
},
href,
diff --git a/src/tracking/trackers/course.test.js b/src/tracking/trackers/course.test.js
index 1650ce3..541ed9b 100644
--- a/src/tracking/trackers/course.test.js
+++ b/src/tracking/trackers/course.test.js
@@ -103,15 +103,19 @@ describe('course trackers', () => {
it('triggers upgrade actions and api.logUpgrade with courseId', () => {
const upgradeButtonClicked = jest.fn();
const upgradeButtonClickedUpsell = jest.fn();
+ const trackUpgradeButtonClicked = jest.fn(() => upgradeButtonClicked);
+ const trackUpgradeButtonClickedUpsell = jest.fn(() => upgradeButtonClickedUpsell);
jest.spyOn(trackers, moduleKeys.upgradeButtonClicked)
- .mockImplementationOnce(upgradeButtonClicked);
+ .mockImplementationOnce(trackUpgradeButtonClicked);
jest.spyOn(trackers, moduleKeys.upgradeButtonClickedUpsell)
- .mockImplementationOnce(upgradeButtonClickedUpsell);
+ .mockImplementationOnce(trackUpgradeButtonClickedUpsell);
const out = trackers.upgradeClicked(courseId, href).createLinkTracker;
expect(out.href).toEqual(href);
out.cb();
- expect(upgradeButtonClicked).toHaveBeenCalledWith(courseId);
- expect(upgradeButtonClickedUpsell).toHaveBeenCalledWith(courseId);
+ expect(trackUpgradeButtonClicked).toHaveBeenCalledWith(courseId);
+ expect(trackUpgradeButtonClickedUpsell).toHaveBeenCalledWith(courseId);
+ expect(upgradeButtonClicked).toHaveBeenCalledWith();
+ expect(upgradeButtonClickedUpsell).toHaveBeenCalledWith();
expect(api.logUpgrade).toHaveBeenCalledWith({ courseId });
});
});
diff --git a/src/widgets/RecommendationsPanel/track.js b/src/widgets/RecommendationsPanel/track.js
index a27c4d4..55a4e89 100644
--- a/src/widgets/RecommendationsPanel/track.js
+++ b/src/widgets/RecommendationsPanel/track.js
@@ -1,9 +1,10 @@
+import { StrictDict } from 'utils';
import { createLinkTracker, createEventTracker } from 'data/services/segment/utils';
-export const eventNames = {
+export const eventNames = StrictDict({
findCoursesClicked: 'edx.bi.dashboard.find_courses_button.clicked',
recommendedCourseClicked: 'edx.bi.user.recommended.course.click',
-};
+});
export const findCoursesClicked = (href) => createLinkTracker(
createEventTracker(eventNames.findCoursesClicked, {
@@ -15,7 +16,7 @@ export const findCoursesClicked = (href) => createLinkTracker(
);
export const recommendedCourseClicked = (courseKey, isPersonalized, href) => createLinkTracker(
- createEventTracker(eventNames.recommendedCoursesClicked, {
+ createEventTracker(eventNames.recommendedCourseClicked, {
course_key: courseKey,
is_personalized_recommendation: isPersonalized,
}),