From 0d6571abf716c53fd10c2cfbc5111daa6e7966cd Mon Sep 17 00:00:00 2001 From: Katie Date: Thu, 17 Mar 2022 08:28:37 -0400 Subject: [PATCH 1/3] CSR-98 Add experiments to query string for testing --- src/helpers/heritage-integration-helper.js | 2 +- src/helpers/unit-test-helper.js | 1 - src/mixins/base-mixin.spec.js | 3 --- src/router/index.js | 4 ++-- 4 files changed, 3 insertions(+), 7 deletions(-) diff --git a/src/helpers/heritage-integration-helper.js b/src/helpers/heritage-integration-helper.js index 95ee7ef09..12cba038b 100644 --- a/src/helpers/heritage-integration-helper.js +++ b/src/helpers/heritage-integration-helper.js @@ -33,7 +33,7 @@ export function navigateToHeritageFunnel() { src: "concept-funnel", // TODO CSR-98 REMOVE THIS cns: "all", - experiments: "ConceptFunnel=ConceptFunnel_V1=ConceptFunnel_TEST=true" + experiments: "RemoveServiceAreaPage=ServAreaRemoval_V7=ServAreaNoRemove_V7_TEST=true,ConceptFunnel=ConceptFunnel_V1=ConceptFunnel_TEST=true" } ); } diff --git a/src/helpers/unit-test-helper.js b/src/helpers/unit-test-helper.js index 1509a4b16..561798629 100644 --- a/src/helpers/unit-test-helper.js +++ b/src/helpers/unit-test-helper.js @@ -49,7 +49,6 @@ export function getMountOptions(mockData) { mocks.$router = mockData.router; mocks.$route = mockData.route; - const global = { mocks: mocks, }; diff --git a/src/mixins/base-mixin.spec.js b/src/mixins/base-mixin.spec.js index 8c33a5774..da684af1b 100644 --- a/src/mixins/base-mixin.spec.js +++ b/src/mixins/base-mixin.spec.js @@ -101,9 +101,6 @@ function getMixInInstance({ isDispatchSuccess = true }) { baseMixIn.methods.$route = route; baseMixIn.methods.storeActions = storeActions; baseMixIn.methods.widgetNames = widgetNames; - baseMixin.document = { - cookie: "" - } store.dispatch = storeDispatch; store.commit = jest.fn(); diff --git a/src/router/index.js b/src/router/index.js index 7f90a733c..a49d416aa 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -132,7 +132,7 @@ router.navigateAfterSave = (scenario, currentRoute, optionalQuery = {}, optional // PRIVATE FUNCTIONS // Navigate to the next route, depending on the scenario. -function navigate(scenario, currentRoute, invalidateOnSave, optionalQuery = {}, optionalParams = {}, optionalPageData = {}) { +async function navigate(scenario, currentRoute, invalidateOnSave, optionalQuery = {}, optionalParams = {}, optionalPageData = {}) { if (!scenario) { console.error("No scenario provided. Please review the routing table."); return; @@ -169,7 +169,7 @@ function navigate(scenario, currentRoute, invalidateOnSave, optionalQuery = {}, }); } else if (matchingScenarioMap.destinationUrl !== undefined) { if (matchingScenarioMap.shouldNavigateToHeritageFunnel) { - saveOrder(); + await saveOrder(); } navigateToUrl(matchingScenarioMap.destinationUrl, optionalQuery); From f4a6cc66cfc574b277a73e5d7dab8818199c77ad Mon Sep 17 00:00:00 2001 From: Katie Date: Thu, 17 Mar 2022 16:12:20 -0400 Subject: [PATCH 2/3] CSR-98 Check and edit cookie info as needed --- src/helpers/heritage-integration-helper.js | 37 ++++++++++++++++------ src/router/index.js | 4 +-- 2 files changed, 30 insertions(+), 11 deletions(-) diff --git a/src/helpers/heritage-integration-helper.js b/src/helpers/heritage-integration-helper.js index 12cba038b..68cb2484e 100644 --- a/src/helpers/heritage-integration-helper.js +++ b/src/helpers/heritage-integration-helper.js @@ -8,18 +8,16 @@ import baseMixin from "../mixins/base-mixin"; // Read info from heritage funnel and reset state or load referral export function handleInfoFromHeritageFunnel() { - var orderInfoJson = getHeritageCookieValue(); - var orderInfo = orderInfoJson == null ? null : JSON.parse(orderInfoJson); + var orderInfo = getHeritageCookieValue(); if (orderInfo?.ShouldResetState) { store.dispatch(storeActions.RESET_STATE); - } - else if (orderInfo != null) { - // should load referral here + deleteHeritageCookie(); } - // Delete cookie once state is loaded or reset - deleteHeritageCookie(); + if (orderInfo?.DidHeritageFunnelUpdateLast) { + // Load referral here + } } export function navigateToHeritageFunnel() { @@ -43,15 +41,36 @@ export async function saveOrder() { store.commit(storeMutations.UPDATE_REFERRAL_NUMBER, savedOrderInfo.referralNumber); store.commit(storeMutations.UPDATE_REFERRAL_DATE, savedOrderInfo.referralDate); store.commit(storeMutations.UPDATE_REFERRAL_CORRELATION_ID, savedOrderInfo.referralCorrelationId); + + setDidHeritageFunnelUpdateLastInHeritageCookie(false); } +/* Start cookie related functions */ export function getHeritageCookieValue() { - return document.cookie + var cookieJson = document.cookie ?.split("; ") ?.find(row => row.startsWith(`${cookieNames.ORDER_INFO}=`)) ?.split("=")[1]; + + return cookieJson == null ? null : JSON.parse(cookieJson); } export function deleteHeritageCookie() { document.cookie = `${cookieNames.ORDER_INFO}=; Max-Age=0; path=/; domain=${location.hostname}`; -} \ No newline at end of file +} + +function setHeritageCookieValue(cookieValue) { + var cookieValueJson = JSON.stringify(cookieValue); + document.cookie = `${cookieNames.ORDER_INFO}=${cookieValueJson}; path=/`; +} + +function setDidHeritageFunnelUpdateLastInHeritageCookie(didHeritageFunnelUpdateLast) { + var cookie = getHeritageCookieValue(); + + if (cookie != null) { + cookie.DidHeritageFunnelUpdateLast = false; + + setHeritageCookieValue(cookie); + } +} +/* End cookie related functions */ \ No newline at end of file diff --git a/src/router/index.js b/src/router/index.js index d9d03e213..c77285677 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -52,9 +52,9 @@ const routes = [ path: "/", name: "root", async beforeEnter(to, from, next) { - // TODO CSR-98 Also triggers on refresh... should it though? - // Entering the concept funnel + // On entering the concept funnel if (from.redirectedFrom === undefined) { + // Read cookie information, decide what to do next handleInfoFromHeritageFunnel(); } From 442125ed650c90d2ca9e56b4964e4c22c89e5688 Mon Sep 17 00:00:00 2001 From: Katie Date: Thu, 17 Mar 2022 16:50:58 -0400 Subject: [PATCH 3/3] CSR-98 Refactor cookie code --- src/helpers/heritage-integration-helper.js | 36 ++++++++++++++-------- 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/src/helpers/heritage-integration-helper.js b/src/helpers/heritage-integration-helper.js index 68cb2484e..eda55a063 100644 --- a/src/helpers/heritage-integration-helper.js +++ b/src/helpers/heritage-integration-helper.js @@ -14,9 +14,12 @@ export function handleInfoFromHeritageFunnel() { store.dispatch(storeActions.RESET_STATE); deleteHeritageCookie(); } - - if (orderInfo?.DidHeritageFunnelUpdateLast) { + else if (orderInfo?.DidHeritageFunnelUpdateLast) { // Load referral here + + // setHeritageCookieProperties({ + // ShouldResetState: false + // }) } } @@ -42,11 +45,13 @@ export async function saveOrder() { store.commit(storeMutations.UPDATE_REFERRAL_DATE, savedOrderInfo.referralDate); store.commit(storeMutations.UPDATE_REFERRAL_CORRELATION_ID, savedOrderInfo.referralCorrelationId); - setDidHeritageFunnelUpdateLastInHeritageCookie(false); + setHeritageCookieProperties({ + DidHeritageFunnelUpdateLast: false + }) } /* Start cookie related functions */ -export function getHeritageCookieValue() { +function getHeritageCookieValue() { var cookieJson = document.cookie ?.split("; ") ?.find(row => row.startsWith(`${cookieNames.ORDER_INFO}=`)) @@ -55,22 +60,29 @@ export function getHeritageCookieValue() { return cookieJson == null ? null : JSON.parse(cookieJson); } -export function deleteHeritageCookie() { +function deleteHeritageCookie() { document.cookie = `${cookieNames.ORDER_INFO}=; Max-Age=0; path=/; domain=${location.hostname}`; } function setHeritageCookieValue(cookieValue) { - var cookieValueJson = JSON.stringify(cookieValue); + let cookieValueJson = cookieValue; + if (typeof cookieValue == "object") + cookieValueJson = JSON.stringify(cookieValue); + document.cookie = `${cookieNames.ORDER_INFO}=${cookieValueJson}; path=/`; } -function setDidHeritageFunnelUpdateLastInHeritageCookie(didHeritageFunnelUpdateLast) { - var cookie = getHeritageCookieValue(); +function setHeritageCookieProperties(properties) { + if (typeof properties == "object") { + let cookie = getHeritageCookieValue(); - if (cookie != null) { - cookie.DidHeritageFunnelUpdateLast = false; - - setHeritageCookieValue(cookie); + if (cookie != null) { + Object.keys(properties).forEach(key => { + cookie[key] = properties[key]; + }); + + setHeritageCookieValue(cookie); + } } } /* End cookie related functions */ \ No newline at end of file