Skip to content

Commit

Permalink
feat: only track my kiva experiment from thank you page
Browse files Browse the repository at this point in the history
  • Loading branch information
dyersituations committed Jan 3, 2025
1 parent 7431e72 commit bed2749
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 9 deletions.
3 changes: 2 additions & 1 deletion src/pages/Thanks/ThanksPage.vue
Original file line number Diff line number Diff line change
Expand Up @@ -631,7 +631,8 @@ export default {
this.$kvTrackEvent,
data?.general ?? {},
data?.my?.userPreferences?.preferences ?? null,
totalLoans
totalLoans,
true,
);
if (this.myKivaEnabled) {
Expand Down
26 changes: 18 additions & 8 deletions src/util/myKivaUtils.js
Original file line number Diff line number Diff line change
Expand Up @@ -57,9 +57,17 @@ export const fetchPostCheckoutAchievements = async (apollo, loanIds) => {
* @param generalSettings The general settings object
* @param preferences The user preferences object
* @param loanTotal The total number of loans the user has made
* @param trackExperiment Whether to track the experiment version
* @returns Whether the MyKiva experience is enabled for the user
*/
export const getIsMyKivaEnabled = (apollo, $kvTrackEvent, generalSettings, preferences, loanTotal) => {
export const getIsMyKivaEnabled = (
apollo,
$kvTrackEvent,
generalSettings,
preferences,
loanTotal,
trackExperiment = false,
) => {
const myKivaFeatureEnabled = readBoolSetting(generalSettings, 'myKivaEnabled.value');
if (myKivaFeatureEnabled) {
const { version: thanksVersion } = apollo.readFragment({
Expand All @@ -78,13 +86,15 @@ export const getIsMyKivaEnabled = (apollo, $kvTrackEvent, generalSettings, prefe
}) ?? {};
const isMyKivaExperimentEnabled = myKivaVersion === 'b';

trackExperimentVersion(
apollo,
$kvTrackEvent,
'event-tracking',
MY_KIVA_EXP,
'EXP-MP-623-Sept2024'
);
if (trackExperiment) {
trackExperimentVersion(
apollo,
$kvTrackEvent,
'event-tracking',
MY_KIVA_EXP,
'EXP-MP-623-Sept2024'
);
}

// The user preference hasSeenMyKiva can be true when we override for internal testing
return hasSeenMyKiva || isMyKivaExperimentEnabled;
Expand Down
25 changes: 25 additions & 0 deletions test/unit/specs/util/myKivaUtils.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import {
import postCheckoutAchievementsQuery from '#src/graphql/query/postCheckoutAchievements.graphql';
import logReadQueryError from '#src/util/logReadQueryError';
import { getUnixTime } from 'date-fns';
import * as experimentUtils from '#src/util/experiment/experimentUtils';

jest.mock('#src/util/logReadQueryError');

Expand Down Expand Up @@ -134,14 +135,18 @@ describe('myKivaUtils.js', () => {
let $kvTrackEventMock;
let generalSettingsMock;
let preferencesMock;
let trackExperimentVersionMock;

beforeEach(() => {
apolloMock = { readFragment: jest.fn() };
$kvTrackEventMock = jest.fn();
generalSettingsMock = { 'myKivaEnabled.value': true };
preferencesMock = {};
trackExperimentVersionMock = jest.spyOn(experimentUtils, 'trackExperimentVersion');
});

afterEach(jest.restoreAllMocks);

it('should return false if myKivaFeatureEnabled is false', () => {
generalSettingsMock['myKivaEnabled.value'] = false;
apolloMock.readFragment
Expand Down Expand Up @@ -196,6 +201,26 @@ describe('myKivaUtils.js', () => {

expect(result).toBe(true);
});

it('should not call trackExperimentVersion if flag not provided', () => {
apolloMock.readFragment
.mockReturnValueOnce({ version: 'a' })
.mockReturnValueOnce({ version: 'b' });

getIsMyKivaEnabled(apolloMock, $kvTrackEventMock, generalSettingsMock, preferencesMock, 3);

expect(trackExperimentVersionMock).toBeCalledTimes(0);
});

it('should call trackExperimentVersion if flag provided', () => {
apolloMock.readFragment
.mockReturnValueOnce({ version: 'a' })
.mockReturnValueOnce({ version: 'b' });

getIsMyKivaEnabled(apolloMock, $kvTrackEventMock, generalSettingsMock, preferencesMock, 3, true);

expect(trackExperimentVersionMock).toBeCalledTimes(1);
});
});

describe('isFirstLogin', () => {
Expand Down

0 comments on commit bed2749

Please sign in to comment.