commit
0ca1f1ac05
6 changed files with 91 additions and 30 deletions
|
|
@ -71,8 +71,12 @@ const endpoints = {
|
||||||
url: "/analytics/api/v1/analytics/log-experiment-exposure",
|
url: "/analytics/api/v1/analytics/log-experiment-exposure",
|
||||||
method: "POST",
|
method: "POST",
|
||||||
},
|
},
|
||||||
LogActivity:{
|
LogPageView:{
|
||||||
url: "/analytics/api/v1/analytics/activity",
|
url: "/analytics/api/v1/analytics/log-page-view",
|
||||||
|
method: "POST",
|
||||||
|
},
|
||||||
|
LogCustomEvent:{
|
||||||
|
url: "/analytics/api/v1/analytics/log-custom-event",
|
||||||
method: "POST",
|
method: "POST",
|
||||||
},
|
},
|
||||||
GetExperimentsByUser: {
|
GetExperimentsByUser: {
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,8 @@ const storeActions = {
|
||||||
SET_REFERRAL_INFORMATION: "setReferralInformation",
|
SET_REFERRAL_INFORMATION: "setReferralInformation",
|
||||||
VALIDATE_ZIP: "validateZip",
|
VALIDATE_ZIP: "validateZip",
|
||||||
LOG_EXPERIMENT_EXPOSURE: "logExperimentExposure",
|
LOG_EXPERIMENT_EXPOSURE: "logExperimentExposure",
|
||||||
LOG_ACTIVITY: "logActivity",
|
LOG_PAGE_VIEW: "logPageView",
|
||||||
|
LOG_CUSTOM_EVENT: "logCustomEvent",
|
||||||
GET_EXPERIMENTS_BY_USER: "GetExperimentsByUser",
|
GET_EXPERIMENTS_BY_USER: "GetExperimentsByUser",
|
||||||
|
|
||||||
// DEPENDENCY MUTATIONS
|
// DEPENDENCY MUTATIONS
|
||||||
|
|
|
||||||
|
|
@ -11,24 +11,34 @@ const currentPageName = getPageNameByQueryString();
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
methods: {
|
methods: {
|
||||||
logEvent(pageEvent, category, action, label, value) {
|
logPageView(pageEvent) {
|
||||||
var payload = {
|
var payload = {
|
||||||
userId: getDeviceIdValue(),
|
userId: getDeviceIdValue(),
|
||||||
sessionKey: getSessionKeyValue(),
|
sessionKey: getSessionKeyValue(),
|
||||||
pageName: currentPageName,
|
pageName: currentPageName,
|
||||||
sessionId: getSessionIdValue(),
|
sessionId: getSessionIdValue(),
|
||||||
|
action: '',
|
||||||
|
event: pageEvent,
|
||||||
shouldUseSessionId: true,
|
shouldUseSessionId: true,
|
||||||
};
|
};
|
||||||
|
|
||||||
if (pageEvent) {
|
baseMixin.methods.dispatchStoreAction(storeActions.LOG_PAGE_VIEW, payload, false);
|
||||||
payload.pageEvent = { action: '', event: pageEvent };
|
},
|
||||||
}
|
|
||||||
|
|
||||||
if (category) {
|
logCustomEvent(category, action, label, value) {
|
||||||
payload.customEvent = { category: category, action: action, label: label, value: value };
|
var payload = {
|
||||||
}
|
userId: getDeviceIdValue(),
|
||||||
|
sessionKey: getSessionKeyValue(),
|
||||||
|
pageName: currentPageName,
|
||||||
|
sessionId: getSessionIdValue(),
|
||||||
|
category: category,
|
||||||
|
action: action,
|
||||||
|
label: label,
|
||||||
|
value: value,
|
||||||
|
shouldUseSessionId: true,
|
||||||
|
};
|
||||||
|
|
||||||
baseMixin.methods.dispatchStoreAction(storeActions.LOG_ACTIVITY, payload, false);
|
baseMixin.methods.dispatchStoreAction(storeActions.LOG_CUSTOM_EVENT, payload, false);
|
||||||
},
|
},
|
||||||
|
|
||||||
pushEventToGA(category, action, label, pushToLogApp = false) {
|
pushEventToGA(category, action, label, pushToLogApp = false) {
|
||||||
|
|
@ -44,7 +54,7 @@ export default {
|
||||||
pushToDataLayerIfDefined(eventToBePushed);
|
pushToDataLayerIfDefined(eventToBePushed);
|
||||||
|
|
||||||
if (pushToLogApp) {
|
if (pushToLogApp) {
|
||||||
this.logEvent(undefined, category, action, label, undefined);
|
this.logCustomEvent(category, action, label, undefined);
|
||||||
}
|
}
|
||||||
|
|
||||||
},
|
},
|
||||||
|
|
@ -58,7 +68,7 @@ export default {
|
||||||
|
|
||||||
pushToDataLayerIfDefined(pageViewEvent);
|
pushToDataLayerIfDefined(pageViewEvent);
|
||||||
|
|
||||||
this.logEvent(currentPageName, analyticsPageEvents.ENTRY);
|
this.logPageView(analyticsPageEvents.ENTRY);
|
||||||
},
|
},
|
||||||
|
|
||||||
pushExperimentsToDataLayer(experiments) {
|
pushExperimentsToDataLayer(experiments) {
|
||||||
|
|
|
||||||
|
|
@ -3,18 +3,34 @@ import { setupMocksForJsFiles } from "@/helpers/unit-test-helper.js";
|
||||||
import { storeActions } from "@/constants/store-actions";
|
import { storeActions } from "@/constants/store-actions";
|
||||||
|
|
||||||
describe("analyticsMixin.js", () => {
|
describe("analyticsMixin.js", () => {
|
||||||
test("logEvent: calls dispatch with type and payload", () => {
|
test("logPageView: calls dispatch with type and payload", () => {
|
||||||
const type = "";
|
const type = "";
|
||||||
const payload = {};
|
const payload = {};
|
||||||
|
|
||||||
const mockData = {
|
const mockData = {
|
||||||
actionList: [{
|
actionList: [{
|
||||||
actionName: storeActions.LOG_ACTIVITY
|
actionName: storeActions.LOG_PAGE_VIEW
|
||||||
}],
|
}],
|
||||||
}
|
}
|
||||||
const mocks = setupMocksForJsFiles(mockData);
|
const mocks = setupMocksForJsFiles(mockData);
|
||||||
|
|
||||||
analyticsMixin.methods.logEvent(type, payload);
|
analyticsMixin.methods.logPageView(type, payload);
|
||||||
|
|
||||||
|
expect(mocks.baseMixin.methods.dispatchStoreAction).toBeCalled();
|
||||||
|
});
|
||||||
|
|
||||||
|
test("logCustomEvent: calls dispatch with type and payload", () => {
|
||||||
|
const type = "";
|
||||||
|
const payload = {};
|
||||||
|
|
||||||
|
const mockData = {
|
||||||
|
actionList: [{
|
||||||
|
actionName: storeActions.LOG_CUSTOM_EVENT
|
||||||
|
}],
|
||||||
|
}
|
||||||
|
const mocks = setupMocksForJsFiles(mockData);
|
||||||
|
|
||||||
|
analyticsMixin.methods.logCustomEvent(type, payload);
|
||||||
|
|
||||||
expect(mocks.baseMixin.methods.dispatchStoreAction).toBeCalled();
|
expect(mocks.baseMixin.methods.dispatchStoreAction).toBeCalled();
|
||||||
});
|
});
|
||||||
|
|
@ -23,7 +39,7 @@ describe("analyticsMixin.js", () => {
|
||||||
// Arrange
|
// Arrange
|
||||||
const mockData = {
|
const mockData = {
|
||||||
actionList: [{
|
actionList: [{
|
||||||
actionName: storeActions.LOG_ACTIVITY
|
actionName: storeActions.LOG_CUSTOM_EVENT
|
||||||
}],
|
}],
|
||||||
}
|
}
|
||||||
const mocks = setupMocksForJsFiles(mockData);
|
const mocks = setupMocksForJsFiles(mockData);
|
||||||
|
|
|
||||||
|
|
@ -433,27 +433,43 @@ export const actions = {
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
logActivity(context, { userId, sessionKey, pageName, sessionId, pageEvent, customEvent, shouldUseSessionId }) {
|
logPageView(context, { userId, sessionKey, pageName, sessionId, action, event, shouldUseSessionId }) {
|
||||||
var payload = {
|
var payload = {
|
||||||
userId: userId,
|
userId: userId,
|
||||||
sessionKey: sessionKey,
|
sessionKey: sessionKey,
|
||||||
sessionId: sessionId,
|
sessionId: sessionId,
|
||||||
pageName: pageName,
|
pageName: pageName,
|
||||||
applicationName: 'SafeliteDotCom',
|
applicationName: 'SafeliteDotCom',
|
||||||
|
action: action,
|
||||||
|
event: event,
|
||||||
shouldUseSessionId: shouldUseSessionId
|
shouldUseSessionId: shouldUseSessionId
|
||||||
};
|
};
|
||||||
|
|
||||||
if (typeof pageEvent !== 'undefined') {
|
return globalMethods.callHttpClient({
|
||||||
payload.pageEvent = { action: pageEvent.action, event: pageEvent.event};
|
method: endpoints.LogPageView.method,
|
||||||
}
|
endpoint: endpoints.LogPageView.url,
|
||||||
|
payload: payload,
|
||||||
|
logApiCall: false
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
if (typeof customEvent !== 'undefined') {
|
logCustomEvent(context, { userId, sessionKey, pageName, sessionId, category, action, label, value, shouldUseSessionId }) {
|
||||||
payload.customEvents = [{category: customEvent.category, action: customEvent.action, label: customEvent.label, value: customEvent.value}];
|
var payload = {
|
||||||
}
|
userId: userId,
|
||||||
|
sessionKey: sessionKey,
|
||||||
|
sessionId: sessionId,
|
||||||
|
pageName: pageName,
|
||||||
|
applicationName: 'SafeliteDotCom',
|
||||||
|
category: category,
|
||||||
|
action: action,
|
||||||
|
label: label,
|
||||||
|
value: value,
|
||||||
|
shouldUseSessionId: shouldUseSessionId
|
||||||
|
};
|
||||||
|
|
||||||
return globalMethods.callHttpClient({
|
return globalMethods.callHttpClient({
|
||||||
method: endpoints.LogActivity.method,
|
method: endpoints.LogCustomEvent.method,
|
||||||
endpoint: endpoints.LogActivity.url,
|
endpoint: endpoints.LogCustomEvent.url,
|
||||||
payload: payload,
|
payload: payload,
|
||||||
logApiCall: false
|
logApiCall: false
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -617,7 +617,7 @@ describe("Actions", () => {
|
||||||
expect(commit).toBeCalledWith(storeMutations.UPDATE_REFERRAL_CORRELATION_ID, "xxx-xxx-xxx");
|
expect(commit).toBeCalledWith(storeMutations.UPDATE_REFERRAL_CORRELATION_ID, "xxx-xxx-xxx");
|
||||||
});
|
});
|
||||||
|
|
||||||
it("logActivity action, should return nothing", async () => {
|
it("logPageView action, should return nothing", async () => {
|
||||||
|
|
||||||
// Arrange
|
// Arrange
|
||||||
const context = state;
|
const context = state;
|
||||||
|
|
@ -626,12 +626,26 @@ describe("Actions", () => {
|
||||||
event: "ENTRY",
|
event: "ENTRY",
|
||||||
}
|
}
|
||||||
|
|
||||||
var customEvent = [{
|
// Act
|
||||||
|
globalMethods.callHttpClient.mockImplementation(() => {
|
||||||
|
return Promise.resolve({ });
|
||||||
|
});
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
const response = await actions.logPageView(context, { userId: "userId", sessionKey: "sessionKey", pageName: "pageName", sessionId: "sessionId", pageEvent: pageEvent, shouldUseSessionId: true });
|
||||||
|
expect(response).toEqual({});
|
||||||
|
});
|
||||||
|
|
||||||
|
it("logCustomEvent action, should return nothing", async () => {
|
||||||
|
|
||||||
|
// Arrange
|
||||||
|
const context = state;
|
||||||
|
var customEvent = {
|
||||||
category: "tstCat",
|
category: "tstCat",
|
||||||
action: "click",
|
action: "click",
|
||||||
label: "damage",
|
label: "damage",
|
||||||
value: "psych"
|
value: "psych"
|
||||||
}];
|
};
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
globalMethods.callHttpClient.mockImplementation(() => {
|
globalMethods.callHttpClient.mockImplementation(() => {
|
||||||
|
|
@ -639,7 +653,7 @@ describe("Actions", () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
// Assert
|
// Assert
|
||||||
const response = await actions.logActivity(context, { userId: "userId", sessionKey: "sessionKey", pageName: "pageName", sessionId: "sessionId", pageEvent: pageEvent, customEvent: customEvent, shouldUseSessionId: true });
|
const response = await actions.logCustomEvent(context, { userId: "userId", sessionKey: "sessionKey", pageName: "pageName", sessionId: "sessionId", customEvent: customEvent, shouldUseSessionId: true });
|
||||||
expect(response).toEqual({});
|
expect(response).toEqual({});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue