Merge pull request #1303 from Safelite/rlsmerge/2023.08.10-to-develop

Rlsmerge/2023.08.10 to develop
This commit is contained in:
matthew-sykes 2023-08-11 09:48:52 -04:00 committed by GitHub
commit ed3d25ee48
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 42 additions and 51 deletions

View file

@ -12,7 +12,6 @@ const GaEvents = {
const GaCategories = { const GaCategories = {
API_RESPONSE: "Api_Response", API_RESPONSE: "Api_Response",
EVOX: "Evox", EVOX: "Evox",
FUNNEL_ENTRY: "funnel_entry",
}; };
const GaActions = { const GaActions = {
@ -21,7 +20,6 @@ const GaActions = {
VIF: "vif", VIF: "vif",
SUBMITTED: "Submitted", SUBMITTED: "Submitted",
DISPLAYED: "Displayed", DISPLAYED: "Displayed",
ZIP_CODE_PROVIDED: "zip_code_provided",
}; };
const GaLabels = { const GaLabels = {

View file

@ -43,6 +43,7 @@ const storeMutations = {
// ORDER MUTATIONS // ORDER MUTATIONS
UPDATE_REFERRAL_NUMBER: "updateReferralNumber", UPDATE_REFERRAL_NUMBER: "updateReferralNumber",
UPDATE_REFERRAL_SEQUENCE_NUMBER: "updateReferralSequenceNumber",
UPDATE_REFERRAL_DATE: "updateReferralDate", UPDATE_REFERRAL_DATE: "updateReferralDate",
UPDATE_REFERRAL_CORRELATION_ID: "updateReferralCorrelationId", UPDATE_REFERRAL_CORRELATION_ID: "updateReferralCorrelationId",
UPDATE_PARENT_ACCT_NUMBER: "updateParentAcctNumber", UPDATE_PARENT_ACCT_NUMBER: "updateParentAcctNumber",

View file

@ -114,6 +114,7 @@ async function saveSessionHelper() {
storeActions.UPDATE_STORE_WITH_SAVE_SESSION_RESPONSE, storeActions.UPDATE_STORE_WITH_SAVE_SESSION_RESPONSE,
{ {
referralNumber: savedSessionInfo.data.referralNumber?.toString(), referralNumber: savedSessionInfo.data.referralNumber?.toString(),
referralSequenceNumber: savedSessionInfo.data.referralSequenceNumber,
referralCorrelationId: savedSessionInfo.data.referralCorrelationId, referralCorrelationId: savedSessionInfo.data.referralCorrelationId,
referralDate: savedSessionInfo.data.referralDate, referralDate: savedSessionInfo.data.referralDate,
parentAccountNumber: savedSessionInfo.data.parentAccountNumber?.toString(), parentAccountNumber: savedSessionInfo.data.parentAccountNumber?.toString(),

View file

@ -0,0 +1,10 @@
export function getQuerystringParameter(key) {
const queryString = window.location.search;
const urlParams = new URLSearchParams(queryString);
const lowerCaseParams = new URLSearchParams();
for (const [name, value] of urlParams) {
lowerCaseParams.append(name.toLowerCase(), value);
}
return lowerCaseParams.get(key) ? lowerCaseParams.get(key) : null;
}

View file

@ -52,7 +52,6 @@ jest.mock("@/store", () => ({
damage: { damage: {
glassToReplace: [], glassToReplace: [],
}, },
order: { serviceLocation: { zipCode: "11111" } },
}, },
})); }));
@ -134,7 +133,6 @@ describe("vehicle-damage.vue", () => {
getters: { getters: {
vehicle: {}, vehicle: {},
payment: { insuranceCoverage: { isVerified: false } }, payment: { insuranceCoverage: { isVerified: false } },
order: { serviceLocation: { zipCode: "11111" } },
}, },
}, },
}, },
@ -177,7 +175,7 @@ describe("vehicle-damage.vue", () => {
expect(wrapper.vm.selectedGlassToReplace()).toEqual(expectedGlassToReplace); expect(wrapper.vm.selectedGlassToReplace()).toEqual(expectedGlassToReplace);
expect(baseMixin.methods.dispatchStoreAction).toBeCalledWith( expect(baseMixin.methods.dispatchStoreAction).toBeCalledWith(
storeActions.GET_DAMAGE_OPTIONS, storeActions.GET_DAMAGE_OPTIONS,
{ carId: "C00000000", zipCode: "11111" } { carId: "C00000000" }
); );
}); });
@ -243,7 +241,6 @@ describe("vehicle-damage.vue", () => {
getters: { getters: {
vehicle: {}, vehicle: {},
payment: { insuranceCoverage: { isVerified: false } }, payment: { insuranceCoverage: { isVerified: false } },
order: { serviceLocation: { zipCode: "11111" } },
}, },
}, },
}, },
@ -273,7 +270,7 @@ describe("vehicle-damage.vue", () => {
expect(wrapper.vm.selectedGlassToReplace()).toEqual(expectedGlassToReplace); expect(wrapper.vm.selectedGlassToReplace()).toEqual(expectedGlassToReplace);
expect(baseMixin.methods.dispatchStoreAction).toBeCalledWith( expect(baseMixin.methods.dispatchStoreAction).toBeCalledWith(
storeActions.GET_DAMAGE_OPTIONS, storeActions.GET_DAMAGE_OPTIONS,
{ carId: "C00000000", zipCode: "11111" } { carId: "C00000000" }
); );
}); });
}); });
@ -526,7 +523,6 @@ describe("vehicle-damage.vue", () => {
eventBusItem: jest.fn(), eventBusItem: jest.fn(),
damage: { glassToReplace: [{ glassLocation: damageLocation }] }, damage: { glassToReplace: [{ glassLocation: damageLocation }] },
isRepair: true, isRepair: true,
order: { serviceLocation: { zipCode: "11111" } },
}; };
var glassSelections = wrapper.vm.getDamageLocationsFromStore(); var glassSelections = wrapper.vm.getDamageLocationsFromStore();
@ -604,7 +600,6 @@ describe("vehicle-damage.vue", () => {
isRepair: isRepair, isRepair: isRepair,
numberOfChips: 2, numberOfChips: 2,
}, },
order: { serviceLocation: { zipCode: "11111" } },
}; };
var windshieldSelections = wrapper.vm.getWindshieldOptionsFromStore(); var windshieldSelections = wrapper.vm.getWindshieldOptionsFromStore();
@ -641,7 +636,6 @@ describe("vehicle-damage.vue", () => {
glassToReplace: [{ glassLocation: damageLocation, glassName: damageName }], glassToReplace: [{ glassLocation: damageLocation, glassName: damageName }],
}, },
isRepair: true, isRepair: true,
order: { serviceLocation: { zipCode: "11111" } },
}; };
var glassSelections = wrapper.vm.getDriverSideReplaceOptionsFromStore(); var glassSelections = wrapper.vm.getDriverSideReplaceOptionsFromStore();
@ -678,7 +672,6 @@ describe("vehicle-damage.vue", () => {
glassToReplace: [{ glassLocation: damageLocation, glassName: damageName }], glassToReplace: [{ glassLocation: damageLocation, glassName: damageName }],
}, },
isRepair: true, isRepair: true,
order: { serviceLocation: { zipCode: "11111" } },
}; };
var glassSelections = wrapper.vm.getPassengerSideReplaceOptionsFromStore(); var glassSelections = wrapper.vm.getPassengerSideReplaceOptionsFromStore();
@ -713,7 +706,6 @@ describe("vehicle-damage.vue", () => {
glassToReplace: [{ glassLocation: damageLocation, glassName: damageName }], glassToReplace: [{ glassLocation: damageLocation, glassName: damageName }],
}, },
isRepair: true, isRepair: true,
order: { serviceLocation: { zipCode: "11111" } },
}; };
var glassSelections = wrapper.vm.getRearReplaceOptionsFromStore(); var glassSelections = wrapper.vm.getRearReplaceOptionsFromStore();
@ -746,7 +738,6 @@ describe("vehicle-damage.vue", () => {
getters: { getters: {
vehicle: {}, vehicle: {},
payment: { insuranceCoverage: { isVerified: true } }, payment: { insuranceCoverage: { isVerified: true } },
order: { serviceLocation: { zipCode: "11111" } },
}, },
}, },
}, },
@ -787,7 +778,6 @@ function setupMocks({ pageHeaderWidgetHeaderText, mountOptionsMockData, funnelCo
isVerified: false, isVerified: false,
}, },
}, },
order: { serviceLocation: { zipCode: "11111" } },
}, },
}, },
}; };

View file

@ -81,7 +81,6 @@ import { getFunnelCookie } from "@/helpers/heritage-integration/cookie-helper";
import store from "@/store"; import store from "@/store";
import baseMixin from "@/mixins/base-mixin"; import baseMixin from "@/mixins/base-mixin";
import { queryStrings } from "@/constants/query-strings";
// DEFINE VALIDATION RULES // DEFINE VALIDATION RULES
defineRule("replace-options-required", required(errorMessages.REPLACE_OPTIONS_REQUIRED)); defineRule("replace-options-required", required(errorMessages.REPLACE_OPTIONS_REQUIRED));
@ -90,20 +89,10 @@ export default {
async beforeRouteEnter(to, from, next) { async beforeRouteEnter(to, from, next) {
// Call APIs // Call APIs
const cmsContentPromise = fetchCmsContentForPage(to.query.fmgPage); const cmsContentPromise = fetchCmsContentForPage(to.query.fmgPage);
const queryString = window.location.search;
const urlParams = new URLSearchParams(queryString);
const lowerCaseParams = new URLSearchParams();
for (const [name, value] of urlParams) {
lowerCaseParams.append(name.toLowerCase(), value);
}
const zip = lowerCaseParams.get(queryStrings.ZIP_CODE)
? lowerCaseParams.get(queryStrings.ZIP_CODE)
: store.getters.order.serviceLocation.zipCode;
const damageOptionsPromise = baseMixin.methods.dispatchStoreAction( const damageOptionsPromise = baseMixin.methods.dispatchStoreAction(
storeActions.GET_DAMAGE_OPTIONS, storeActions.GET_DAMAGE_OPTIONS,
{ carId: store.getters.vehicle.carId, zipCode: zip } { carId: store.getters.vehicle.carId }
); );
// Settle promises and get results // Settle promises and get results
@ -146,7 +135,6 @@ export default {
}, },
selectedWindshieldOptions: this.getWindshieldOptionsFromStore(), selectedWindshieldOptions: this.getWindshieldOptionsFromStore(),
selectedRearReplaceOptions: this.getRearReplaceOptionsFromStore(), selectedRearReplaceOptions: this.getRearReplaceOptionsFromStore(),
serviceZipCode: this.getZipFromStore() ?? this.$route.query.zipcode,
}; };
}, },
mounted() { mounted() {
@ -169,18 +157,6 @@ export default {
true true
); );
} }
if (this.serviceZipCode) {
this.pushEventToGA(
this.GaCategories.FUNNEL_ENTRY,
this.GaActions.ZIP_CODE_PROVIDED,
this.serviceZipCode,
true
);
}
},
getZipFromStore() {
return this.$store.getters.order.serviceLocation.zipCode;
}, },
backButtonAction() { backButtonAction() {

View file

@ -38,6 +38,8 @@ export default {
event: pageEvent, event: pageEvent,
shouldUseSessionId: false, shouldUseSessionId: false,
experimentsForUser: store.getters.applicationUser.experiments, experimentsForUser: store.getters.applicationUser.experiments,
referralSequenceNumber: store.getters.order.referralSequenceNumber,
parentAccountNumber: store.getters.order.payment.parentAccountNumber,
}; };
baseMixin.methods.dispatchStoreAction(storeActions.LOG_PAGE_VIEW, payload, false); baseMixin.methods.dispatchStoreAction(storeActions.LOG_PAGE_VIEW, payload, false);
@ -57,6 +59,8 @@ export default {
value: value, value: value,
shouldUseSessionId: false, shouldUseSessionId: false,
experimentsForUser: store.getters.applicationUser.experiments, experimentsForUser: store.getters.applicationUser.experiments,
referralSequenceNumber: store.getters.order.referralSequenceNumber,
parentAccountNumber: store.getters.order.payment.parentAccountNumber,
}; };
baseMixin.methods.dispatchStoreAction(storeActions.LOG_CUSTOM_EVENT, payload, false); baseMixin.methods.dispatchStoreAction(storeActions.LOG_CUSTOM_EVENT, payload, false);

View file

@ -13,6 +13,8 @@ import { fmgPageValues } from "@/router/router-constants/fmgPage-values";
import { deleteFunnelCookie } from "@/helpers/heritage-integration/cookie-helper.js"; import { deleteFunnelCookie } from "@/helpers/heritage-integration/cookie-helper.js";
import { deepEqual } from "@/helpers/object-helper"; import { deepEqual } from "@/helpers/object-helper";
import { AppointmentTypeStrings, PREMIUM_FEE_PART_TYPE } from "@/constants/schedule-constants"; import { AppointmentTypeStrings, PREMIUM_FEE_PART_TYPE } from "@/constants/schedule-constants";
import { getQuerystringParameter } from "@/helpers/querystring-helper";
import { queryStrings } from "@/constants/query-strings";
import { partTypeStrings } from "@/constants/part-type-strings"; import { partTypeStrings } from "@/constants/part-type-strings";
import { import {
convertDateStringToDate, convertDateStringToDate,
@ -104,6 +106,7 @@ const getDefaultState = () => {
jobMinMinutes: null, jobMinMinutes: null,
}, },
referralNumber: null, referralNumber: null,
referralSequenceNumber: null,
referralDate: null, referralDate: null,
referralCorrelationId: null, referralCorrelationId: null,
eon: null, eon: null,
@ -196,6 +199,9 @@ export const mutations = {
updateReferralNumber(state, referralNumber) { updateReferralNumber(state, referralNumber) {
state.order.referralNumber = referralNumber; state.order.referralNumber = referralNumber;
}, },
updateReferralSequenceNumber(state, referralSequenceNumber) {
state.order.referralSequenceNumber = referralSequenceNumber;
},
updateReferralDate(state, referralDate) { updateReferralDate(state, referralDate) {
state.order.referralDate = referralDate; state.order.referralDate = referralDate;
}, },
@ -419,6 +425,7 @@ export const mutations = {
// Misc Mutations // Misc Mutations
updateStateWithOrderInformation(state, sessionInformation) { updateStateWithOrderInformation(state, sessionInformation) {
state.order.referralNumber = sessionInformation.order.referralNumber; state.order.referralNumber = sessionInformation.order.referralNumber;
state.order.referralSequenceNumber = sessionInformation.order.referralSequenceNumber;
state.order.referralDate = sessionInformation.order.referralDate; state.order.referralDate = sessionInformation.order.referralDate;
state.order.referralCorrelationId = sessionInformation.order.referralCorrelationId; state.order.referralCorrelationId = sessionInformation.order.referralCorrelationId;
state.order.eon = sessionInformation.order.eon; state.order.eon = sessionInformation.order.eon;
@ -787,12 +794,13 @@ export const actions = {
}); });
}, },
getDamageOptions(context, { carId, zipCode }) { getDamageOptions(context, { carId }) {
return globalMethods.callHttpClient({ return globalMethods.callHttpClient({
methods: endpoints.GetDamageOptions.method, methods: endpoints.GetDamageOptions.method,
endpoint: `${endpoints.GetDamageOptions.url}/${carId}`, endpoint: `${endpoints.GetDamageOptions.url}/${carId}`,
payload: {}, payload: {},
additionalSuccessEventDataHandler: (response) => "QueryStringZip: " + zipCode, additionalSuccessEventDataHandler: (response) =>
"QueryStringZip: " + getQuerystringParameter(queryStrings.ZIP_CODE),
}); });
}, },
@ -908,6 +916,7 @@ export const actions = {
context, context,
{ {
referralNumber, referralNumber,
referralSequenceNumber,
referralDate, referralDate,
referralCorrelationId, referralCorrelationId,
eon, eon,
@ -917,6 +926,7 @@ export const actions = {
} }
) { ) {
context.commit(storeMutations.UPDATE_REFERRAL_NUMBER, referralNumber); context.commit(storeMutations.UPDATE_REFERRAL_NUMBER, referralNumber);
context.commit(storeMutations.UPDATE_REFERRAL_SEQUENCE_NUMBER, referralSequenceNumber);
context.commit(storeMutations.UPDATE_REFERRAL_DATE, referralDate); context.commit(storeMutations.UPDATE_REFERRAL_DATE, referralDate);
context.commit(storeMutations.UPDATE_REFERRAL_CORRELATION_ID, referralCorrelationId); context.commit(storeMutations.UPDATE_REFERRAL_CORRELATION_ID, referralCorrelationId);
context.commit(storeMutations.UPDATE_EON, eon); context.commit(storeMutations.UPDATE_EON, eon);
@ -936,6 +946,8 @@ export const actions = {
event, event,
shouldUseSessionId, shouldUseSessionId,
experimentsForUser, experimentsForUser,
referralSequenceNumber,
parentAccountNumber,
} }
) { ) {
var payload = { var payload = {
@ -948,6 +960,8 @@ export const actions = {
event: event, event: event,
shouldUseSessionId: shouldUseSessionId, shouldUseSessionId: shouldUseSessionId,
experimentsForUser: experimentsForUser, experimentsForUser: experimentsForUser,
referralSequenceNumber: referralSequenceNumber,
parentAccountNumber: parentAccountNumber,
}; };
return globalMethods return globalMethods
@ -980,6 +994,8 @@ export const actions = {
value, value,
shouldUseSessionId, shouldUseSessionId,
experimentsForUser, experimentsForUser,
referralSequenceNumber,
parentAccountNumber,
} }
) { ) {
var payload = { var payload = {
@ -994,6 +1010,8 @@ export const actions = {
value: value, value: value,
shouldUseSessionId: shouldUseSessionId, shouldUseSessionId: shouldUseSessionId,
experimentsForUser: experimentsForUser, experimentsForUser: experimentsForUser,
referralSequenceNumber: referralSequenceNumber,
parentAccountNumber: parentAccountNumber,
}; };
return globalMethods return globalMethods
@ -1499,8 +1517,8 @@ export const actions = {
existingPromoCode: null, existingPromoCode: null,
referralCorrelationId: order.referralCorrelationId, referralCorrelationId: order.referralCorrelationId,
referralDate: order.referralDate, referralDate: order.referralDate,
referralNumber: order.referralNumber?.toString(), // TODO It'd be nice to save these as strings in the first place referralNumber: order.referralNumber?.toString(),
referralSequenceNumber: order.referralNumber?.toString(), // TODO Pass the referralSequence number once insurance flow creates it referralSequenceNumber: order.referralSequenceNumber,
eon: order.eon, eon: order.eon,
}, },
}, },
@ -2093,12 +2111,6 @@ export const actions = {
return true; return true;
default: default:
} }
if (
context.state.order.vehicle.make.toLowerCase() === "ford" &&
context.state.order.vehicle.year >= 2018
) {
return true;
}
if ( if (
context.state.order.vehicle.make.toLowerCase() === "bmw" && context.state.order.vehicle.make.toLowerCase() === "bmw" &&
context.state.order.vehicle.year <= 2017 context.state.order.vehicle.year <= 2017

View file

@ -819,6 +819,7 @@ describe("Actions", () => {
// Act // Act
actions.updateStoreWithSaveSessionResponse(context, { actions.updateStoreWithSaveSessionResponse(context, {
referralNumber: "123", referralNumber: "123",
referralSequenceNumber: 123,
referralDate: new Date().toUTCString(), referralDate: new Date().toUTCString(),
referralCorrelationId: "xxx-xxx-xxx", referralCorrelationId: "xxx-xxx-xxx",
parentAccountNumber: "167132", parentAccountNumber: "167132",
@ -3321,8 +3322,6 @@ describe("Getters", () => {
describe("isVinOptionalVehicle", () => { describe("isVinOptionalVehicle", () => {
const testVehicles = [ const testVehicles = [
["2017", "acura", false], ["2017", "acura", false],
["2017", "ford", false],
["2018", "ford", true],
["2018", "bmw", false], ["2018", "bmw", false],
["2017", "bmw", true], ["2017", "bmw", true],
["2016", "bmw", true], ["2016", "bmw", true],