Merge pull request #1303 from Safelite/rlsmerge/2023.08.10-to-develop
Rlsmerge/2023.08.10 to develop
This commit is contained in:
commit
ed3d25ee48
9 changed files with 42 additions and 51 deletions
|
|
@ -12,7 +12,6 @@ const GaEvents = {
|
|||
const GaCategories = {
|
||||
API_RESPONSE: "Api_Response",
|
||||
EVOX: "Evox",
|
||||
FUNNEL_ENTRY: "funnel_entry",
|
||||
};
|
||||
|
||||
const GaActions = {
|
||||
|
|
@ -21,7 +20,6 @@ const GaActions = {
|
|||
VIF: "vif",
|
||||
SUBMITTED: "Submitted",
|
||||
DISPLAYED: "Displayed",
|
||||
ZIP_CODE_PROVIDED: "zip_code_provided",
|
||||
};
|
||||
|
||||
const GaLabels = {
|
||||
|
|
|
|||
|
|
@ -43,6 +43,7 @@ const storeMutations = {
|
|||
|
||||
// ORDER MUTATIONS
|
||||
UPDATE_REFERRAL_NUMBER: "updateReferralNumber",
|
||||
UPDATE_REFERRAL_SEQUENCE_NUMBER: "updateReferralSequenceNumber",
|
||||
UPDATE_REFERRAL_DATE: "updateReferralDate",
|
||||
UPDATE_REFERRAL_CORRELATION_ID: "updateReferralCorrelationId",
|
||||
UPDATE_PARENT_ACCT_NUMBER: "updateParentAcctNumber",
|
||||
|
|
|
|||
|
|
@ -114,6 +114,7 @@ async function saveSessionHelper() {
|
|||
storeActions.UPDATE_STORE_WITH_SAVE_SESSION_RESPONSE,
|
||||
{
|
||||
referralNumber: savedSessionInfo.data.referralNumber?.toString(),
|
||||
referralSequenceNumber: savedSessionInfo.data.referralSequenceNumber,
|
||||
referralCorrelationId: savedSessionInfo.data.referralCorrelationId,
|
||||
referralDate: savedSessionInfo.data.referralDate,
|
||||
parentAccountNumber: savedSessionInfo.data.parentAccountNumber?.toString(),
|
||||
|
|
|
|||
10
src/helpers/querystring-helper.js
Normal file
10
src/helpers/querystring-helper.js
Normal 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;
|
||||
}
|
||||
|
|
@ -52,7 +52,6 @@ jest.mock("@/store", () => ({
|
|||
damage: {
|
||||
glassToReplace: [],
|
||||
},
|
||||
order: { serviceLocation: { zipCode: "11111" } },
|
||||
},
|
||||
}));
|
||||
|
||||
|
|
@ -134,7 +133,6 @@ describe("vehicle-damage.vue", () => {
|
|||
getters: {
|
||||
vehicle: {},
|
||||
payment: { insuranceCoverage: { isVerified: false } },
|
||||
order: { serviceLocation: { zipCode: "11111" } },
|
||||
},
|
||||
},
|
||||
},
|
||||
|
|
@ -177,7 +175,7 @@ describe("vehicle-damage.vue", () => {
|
|||
expect(wrapper.vm.selectedGlassToReplace()).toEqual(expectedGlassToReplace);
|
||||
expect(baseMixin.methods.dispatchStoreAction).toBeCalledWith(
|
||||
storeActions.GET_DAMAGE_OPTIONS,
|
||||
{ carId: "C00000000", zipCode: "11111" }
|
||||
{ carId: "C00000000" }
|
||||
);
|
||||
});
|
||||
|
||||
|
|
@ -243,7 +241,6 @@ describe("vehicle-damage.vue", () => {
|
|||
getters: {
|
||||
vehicle: {},
|
||||
payment: { insuranceCoverage: { isVerified: false } },
|
||||
order: { serviceLocation: { zipCode: "11111" } },
|
||||
},
|
||||
},
|
||||
},
|
||||
|
|
@ -273,7 +270,7 @@ describe("vehicle-damage.vue", () => {
|
|||
expect(wrapper.vm.selectedGlassToReplace()).toEqual(expectedGlassToReplace);
|
||||
expect(baseMixin.methods.dispatchStoreAction).toBeCalledWith(
|
||||
storeActions.GET_DAMAGE_OPTIONS,
|
||||
{ carId: "C00000000", zipCode: "11111" }
|
||||
{ carId: "C00000000" }
|
||||
);
|
||||
});
|
||||
});
|
||||
|
|
@ -526,7 +523,6 @@ describe("vehicle-damage.vue", () => {
|
|||
eventBusItem: jest.fn(),
|
||||
damage: { glassToReplace: [{ glassLocation: damageLocation }] },
|
||||
isRepair: true,
|
||||
order: { serviceLocation: { zipCode: "11111" } },
|
||||
};
|
||||
|
||||
var glassSelections = wrapper.vm.getDamageLocationsFromStore();
|
||||
|
|
@ -604,7 +600,6 @@ describe("vehicle-damage.vue", () => {
|
|||
isRepair: isRepair,
|
||||
numberOfChips: 2,
|
||||
},
|
||||
order: { serviceLocation: { zipCode: "11111" } },
|
||||
};
|
||||
|
||||
var windshieldSelections = wrapper.vm.getWindshieldOptionsFromStore();
|
||||
|
|
@ -641,7 +636,6 @@ describe("vehicle-damage.vue", () => {
|
|||
glassToReplace: [{ glassLocation: damageLocation, glassName: damageName }],
|
||||
},
|
||||
isRepair: true,
|
||||
order: { serviceLocation: { zipCode: "11111" } },
|
||||
};
|
||||
|
||||
var glassSelections = wrapper.vm.getDriverSideReplaceOptionsFromStore();
|
||||
|
|
@ -678,7 +672,6 @@ describe("vehicle-damage.vue", () => {
|
|||
glassToReplace: [{ glassLocation: damageLocation, glassName: damageName }],
|
||||
},
|
||||
isRepair: true,
|
||||
order: { serviceLocation: { zipCode: "11111" } },
|
||||
};
|
||||
|
||||
var glassSelections = wrapper.vm.getPassengerSideReplaceOptionsFromStore();
|
||||
|
|
@ -713,7 +706,6 @@ describe("vehicle-damage.vue", () => {
|
|||
glassToReplace: [{ glassLocation: damageLocation, glassName: damageName }],
|
||||
},
|
||||
isRepair: true,
|
||||
order: { serviceLocation: { zipCode: "11111" } },
|
||||
};
|
||||
|
||||
var glassSelections = wrapper.vm.getRearReplaceOptionsFromStore();
|
||||
|
|
@ -746,7 +738,6 @@ describe("vehicle-damage.vue", () => {
|
|||
getters: {
|
||||
vehicle: {},
|
||||
payment: { insuranceCoverage: { isVerified: true } },
|
||||
order: { serviceLocation: { zipCode: "11111" } },
|
||||
},
|
||||
},
|
||||
},
|
||||
|
|
@ -787,7 +778,6 @@ function setupMocks({ pageHeaderWidgetHeaderText, mountOptionsMockData, funnelCo
|
|||
isVerified: false,
|
||||
},
|
||||
},
|
||||
order: { serviceLocation: { zipCode: "11111" } },
|
||||
},
|
||||
},
|
||||
};
|
||||
|
|
|
|||
|
|
@ -81,7 +81,6 @@ import { getFunnelCookie } from "@/helpers/heritage-integration/cookie-helper";
|
|||
|
||||
import store from "@/store";
|
||||
import baseMixin from "@/mixins/base-mixin";
|
||||
import { queryStrings } from "@/constants/query-strings";
|
||||
// DEFINE VALIDATION RULES
|
||||
defineRule("replace-options-required", required(errorMessages.REPLACE_OPTIONS_REQUIRED));
|
||||
|
||||
|
|
@ -90,20 +89,10 @@ export default {
|
|||
async beforeRouteEnter(to, from, next) {
|
||||
// Call APIs
|
||||
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(
|
||||
storeActions.GET_DAMAGE_OPTIONS,
|
||||
{ carId: store.getters.vehicle.carId, zipCode: zip }
|
||||
{ carId: store.getters.vehicle.carId }
|
||||
);
|
||||
|
||||
// Settle promises and get results
|
||||
|
|
@ -146,7 +135,6 @@ export default {
|
|||
},
|
||||
selectedWindshieldOptions: this.getWindshieldOptionsFromStore(),
|
||||
selectedRearReplaceOptions: this.getRearReplaceOptionsFromStore(),
|
||||
serviceZipCode: this.getZipFromStore() ?? this.$route.query.zipcode,
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
|
|
@ -169,18 +157,6 @@ export default {
|
|||
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() {
|
||||
|
|
|
|||
|
|
@ -38,6 +38,8 @@ export default {
|
|||
event: pageEvent,
|
||||
shouldUseSessionId: false,
|
||||
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);
|
||||
|
|
@ -57,6 +59,8 @@ export default {
|
|||
value: value,
|
||||
shouldUseSessionId: false,
|
||||
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);
|
||||
|
|
|
|||
|
|
@ -13,6 +13,8 @@ import { fmgPageValues } from "@/router/router-constants/fmgPage-values";
|
|||
import { deleteFunnelCookie } from "@/helpers/heritage-integration/cookie-helper.js";
|
||||
import { deepEqual } from "@/helpers/object-helper";
|
||||
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 {
|
||||
convertDateStringToDate,
|
||||
|
|
@ -104,6 +106,7 @@ const getDefaultState = () => {
|
|||
jobMinMinutes: null,
|
||||
},
|
||||
referralNumber: null,
|
||||
referralSequenceNumber: null,
|
||||
referralDate: null,
|
||||
referralCorrelationId: null,
|
||||
eon: null,
|
||||
|
|
@ -196,6 +199,9 @@ export const mutations = {
|
|||
updateReferralNumber(state, referralNumber) {
|
||||
state.order.referralNumber = referralNumber;
|
||||
},
|
||||
updateReferralSequenceNumber(state, referralSequenceNumber) {
|
||||
state.order.referralSequenceNumber = referralSequenceNumber;
|
||||
},
|
||||
updateReferralDate(state, referralDate) {
|
||||
state.order.referralDate = referralDate;
|
||||
},
|
||||
|
|
@ -419,6 +425,7 @@ export const mutations = {
|
|||
// Misc Mutations
|
||||
updateStateWithOrderInformation(state, sessionInformation) {
|
||||
state.order.referralNumber = sessionInformation.order.referralNumber;
|
||||
state.order.referralSequenceNumber = sessionInformation.order.referralSequenceNumber;
|
||||
state.order.referralDate = sessionInformation.order.referralDate;
|
||||
state.order.referralCorrelationId = sessionInformation.order.referralCorrelationId;
|
||||
state.order.eon = sessionInformation.order.eon;
|
||||
|
|
@ -787,12 +794,13 @@ export const actions = {
|
|||
});
|
||||
},
|
||||
|
||||
getDamageOptions(context, { carId, zipCode }) {
|
||||
getDamageOptions(context, { carId }) {
|
||||
return globalMethods.callHttpClient({
|
||||
methods: endpoints.GetDamageOptions.method,
|
||||
endpoint: `${endpoints.GetDamageOptions.url}/${carId}`,
|
||||
payload: {},
|
||||
additionalSuccessEventDataHandler: (response) => "QueryStringZip: " + zipCode,
|
||||
additionalSuccessEventDataHandler: (response) =>
|
||||
"QueryStringZip: " + getQuerystringParameter(queryStrings.ZIP_CODE),
|
||||
});
|
||||
},
|
||||
|
||||
|
|
@ -908,6 +916,7 @@ export const actions = {
|
|||
context,
|
||||
{
|
||||
referralNumber,
|
||||
referralSequenceNumber,
|
||||
referralDate,
|
||||
referralCorrelationId,
|
||||
eon,
|
||||
|
|
@ -917,6 +926,7 @@ export const actions = {
|
|||
}
|
||||
) {
|
||||
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_CORRELATION_ID, referralCorrelationId);
|
||||
context.commit(storeMutations.UPDATE_EON, eon);
|
||||
|
|
@ -936,6 +946,8 @@ export const actions = {
|
|||
event,
|
||||
shouldUseSessionId,
|
||||
experimentsForUser,
|
||||
referralSequenceNumber,
|
||||
parentAccountNumber,
|
||||
}
|
||||
) {
|
||||
var payload = {
|
||||
|
|
@ -948,6 +960,8 @@ export const actions = {
|
|||
event: event,
|
||||
shouldUseSessionId: shouldUseSessionId,
|
||||
experimentsForUser: experimentsForUser,
|
||||
referralSequenceNumber: referralSequenceNumber,
|
||||
parentAccountNumber: parentAccountNumber,
|
||||
};
|
||||
|
||||
return globalMethods
|
||||
|
|
@ -980,6 +994,8 @@ export const actions = {
|
|||
value,
|
||||
shouldUseSessionId,
|
||||
experimentsForUser,
|
||||
referralSequenceNumber,
|
||||
parentAccountNumber,
|
||||
}
|
||||
) {
|
||||
var payload = {
|
||||
|
|
@ -994,6 +1010,8 @@ export const actions = {
|
|||
value: value,
|
||||
shouldUseSessionId: shouldUseSessionId,
|
||||
experimentsForUser: experimentsForUser,
|
||||
referralSequenceNumber: referralSequenceNumber,
|
||||
parentAccountNumber: parentAccountNumber,
|
||||
};
|
||||
|
||||
return globalMethods
|
||||
|
|
@ -1499,8 +1517,8 @@ export const actions = {
|
|||
existingPromoCode: null,
|
||||
referralCorrelationId: order.referralCorrelationId,
|
||||
referralDate: order.referralDate,
|
||||
referralNumber: order.referralNumber?.toString(), // TODO It'd be nice to save these as strings in the first place
|
||||
referralSequenceNumber: order.referralNumber?.toString(), // TODO Pass the referralSequence number once insurance flow creates it
|
||||
referralNumber: order.referralNumber?.toString(),
|
||||
referralSequenceNumber: order.referralSequenceNumber,
|
||||
eon: order.eon,
|
||||
},
|
||||
},
|
||||
|
|
@ -2093,12 +2111,6 @@ export const actions = {
|
|||
return true;
|
||||
default:
|
||||
}
|
||||
if (
|
||||
context.state.order.vehicle.make.toLowerCase() === "ford" &&
|
||||
context.state.order.vehicle.year >= 2018
|
||||
) {
|
||||
return true;
|
||||
}
|
||||
if (
|
||||
context.state.order.vehicle.make.toLowerCase() === "bmw" &&
|
||||
context.state.order.vehicle.year <= 2017
|
||||
|
|
|
|||
|
|
@ -819,6 +819,7 @@ describe("Actions", () => {
|
|||
// Act
|
||||
actions.updateStoreWithSaveSessionResponse(context, {
|
||||
referralNumber: "123",
|
||||
referralSequenceNumber: 123,
|
||||
referralDate: new Date().toUTCString(),
|
||||
referralCorrelationId: "xxx-xxx-xxx",
|
||||
parentAccountNumber: "167132",
|
||||
|
|
@ -3321,8 +3322,6 @@ describe("Getters", () => {
|
|||
describe("isVinOptionalVehicle", () => {
|
||||
const testVehicles = [
|
||||
["2017", "acura", false],
|
||||
["2017", "ford", false],
|
||||
["2018", "ford", true],
|
||||
["2018", "bmw", false],
|
||||
["2017", "bmw", true],
|
||||
["2016", "bmw", true],
|
||||
|
|
|
|||
Loading…
Reference in a new issue