Merge pull request #2012 from Safelite/feature/CSR-2234
Feature/csr-2234
This commit is contained in:
commit
812149a98b
5 changed files with 48 additions and 29 deletions
6
src/constants/external-parameters.js
Normal file
6
src/constants/external-parameters.js
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
const externalParameterStatus = {
|
||||
NOT_SET: null,
|
||||
ACTIVE: 1,
|
||||
INACTIVE: 0,
|
||||
};
|
||||
export { externalParameterStatus };
|
||||
|
|
@ -65,6 +65,24 @@ jest.mock("@/mixins/base-mixin", () => ({
|
|||
},
|
||||
}));
|
||||
|
||||
const mockExperimentSettings = experimentSettings;
|
||||
|
||||
jest.mock("@/mixins/experiment-mixin.js", () => ({
|
||||
methods: {
|
||||
getSettingValue(settingName) {
|
||||
if (settingName === mockExperimentSettings.SERVICE_PACKAGE_DISCOUNT) {
|
||||
return true;
|
||||
}
|
||||
if (settingName === mockExperimentSettings.INSURANCE_TAB_TO_DISPLAY_THRESHOLD_INTERNAL) {
|
||||
return 300;
|
||||
} else if (settingName === mockExperimentSettings.INSURANCE_TAB_TO_DISPLAY_THRESHOLD_EXTERNAL) {
|
||||
return 500;
|
||||
}
|
||||
return "test";
|
||||
},
|
||||
},
|
||||
}));
|
||||
|
||||
const mockMixin = {
|
||||
methods: {
|
||||
filterOutFees: jest.fn().mockImplementation(() => {
|
||||
|
|
@ -73,12 +91,6 @@ const mockMixin = {
|
|||
isFormValid: jest.fn().mockImplementation(() => {
|
||||
return true;
|
||||
}),
|
||||
getSettingValue: jest.fn((settingName) => {
|
||||
if (settingName === experimentSettings.SERVICE_PACKAGE_DISCOUNT) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}),
|
||||
},
|
||||
};
|
||||
let mockTierOnePrice = 501;
|
||||
|
|
@ -261,7 +273,7 @@ describe("quote.vue", () => {
|
|||
};
|
||||
const { wrapper } = setupMocks({});
|
||||
|
||||
//mock this to avoid needing to populate this.$route in an unrelated test
|
||||
//mock this to avoid needing to populate this.$route in an unrelated test
|
||||
wrapper.vm.getDefaultIsInsuranceSelectedValue = jest.fn();
|
||||
|
||||
//Act
|
||||
|
|
@ -309,7 +321,7 @@ describe("quote.vue", () => {
|
|||
|
||||
wrapper.vm.$route = { query: { isInsurance: "false" } };
|
||||
|
||||
const isServicePackageDiscount = mockMixin.methods.getSettingValue(
|
||||
const isServicePackageDiscount = experimentMixin.methods.getSettingValue(
|
||||
experimentSettings.SERVICE_PACKAGE_DISCOUNT
|
||||
);
|
||||
|
||||
|
|
@ -701,7 +713,7 @@ describe("quote.vue", () => {
|
|||
inactivePromos: [],
|
||||
},
|
||||
},
|
||||
externalParameterState: { isExternalParameter: true },
|
||||
externalParameterState: { isExternalParameter: 1 },
|
||||
externalParameterQuote: {
|
||||
isInsurance: true,
|
||||
servicePackage: "glassonly",
|
||||
|
|
@ -758,8 +770,6 @@ function setupMocks({ customMountOptions }) {
|
|||
baseMixin.methods.ResetExternalParamsAndHideModal = jest.fn();
|
||||
baseMixin.methods.isFormValid = jest.fn().mockReturnValue(true);
|
||||
mountOptions.global.mocks["$store"] = store;
|
||||
store.getters.experimentSettings = "test value";
|
||||
|
||||
mountOptions["attachTo"] = document.body;
|
||||
|
||||
const wrapper = shallowMount(quote, mountOptions);
|
||||
|
|
|
|||
|
|
@ -136,6 +136,8 @@ import { nextTick } from "vue";
|
|||
import { packageNames } from "@/constants/package-names";
|
||||
import { navigateToHeritageFunnel } from "@/helpers/heritage-integration/navigation-helper";
|
||||
import { containsRecalParts } from "@/helpers/recal-helper";
|
||||
import { externalParameterStatus } from "@/constants/external-parameters";
|
||||
|
||||
defineRule("option-required", required(errorMessages.OPTION_REQUIRED));
|
||||
|
||||
const INSURANCE_TAB_TO_DISPLAY_THRESHOLD_DEFAULT = 300;
|
||||
|
|
@ -336,13 +338,20 @@ export default {
|
|||
let internalThreshold = experimentMixin.methods.getSettingValue(
|
||||
experimentSettings.INSURANCE_TAB_TO_DISPLAY_THRESHOLD_INTERNAL
|
||||
);
|
||||
|
||||
const isExternalParameter = store.getters.externalParameterState?.isExternalParameter;
|
||||
|
||||
if (isExternalParameter !== undefined) {
|
||||
// user is from an external source (either has value or is null)
|
||||
if (isExternalParameter === externalParameterStatus.NOT_SET) {
|
||||
// there are no active or inactive external parameters; use internal threshold
|
||||
if (internalThreshold) thresholdToUse = internalThreshold;
|
||||
|
||||
if (store.getters.externalParameterQuote.isInsurance == true) {
|
||||
vm.isInsuranceSelected = getIsInsuranceSelectedValue(
|
||||
vm.availableLineItems,
|
||||
thresholdToUse
|
||||
);
|
||||
baseMixin.methods.ResetExternalParamsAndHideModal();
|
||||
} else {
|
||||
// user came from an external source
|
||||
if (store.getters.externalParameterQuote?.isInsurance == true) {
|
||||
// did user intentionally select insurance?
|
||||
vm.isInsuranceSelected = true;
|
||||
vm.servicePackage = store.getters.externalParameterQuote.servicePackage;
|
||||
|
|
@ -365,15 +374,6 @@ export default {
|
|||
);
|
||||
baseMixin.methods.ResetExternalParamsAndHideModal();
|
||||
}
|
||||
} else {
|
||||
// there are no external parameters; use internal threshold
|
||||
if (internalThreshold) thresholdToUse = internalThreshold;
|
||||
|
||||
vm.isInsuranceSelected = getIsInsuranceSelectedValue(
|
||||
vm.availableLineItems,
|
||||
thresholdToUse
|
||||
);
|
||||
baseMixin.methods.ResetExternalParamsAndHideModal();
|
||||
}
|
||||
});
|
||||
},
|
||||
|
|
@ -571,7 +571,7 @@ export default {
|
|||
}
|
||||
});
|
||||
this.$nextTick(() => {
|
||||
const availablePackageNames = this.$refs.servicePackage.servicePackageAnswers;
|
||||
const availablePackageNames = this.$refs.servicePackage?.servicePackageAnswers;
|
||||
var eventLabel = "";
|
||||
availablePackageNames?.forEach((tier) => {
|
||||
if (tier) {
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ import { getQuerystringParameter } from "@/helpers/querystring-helper";
|
|||
import { getDeviceIdValue } from "@/helpers/heritage-integration/cookie-helper";
|
||||
import { showFmgLoadingModal } from "@/helpers/loading-modal-helper";
|
||||
import { fmgPageValues, funnelStartPageName } from "@/router/router-constants/fmgPage-values";
|
||||
import { externalParameterStatus } from "@/constants/external-parameters";
|
||||
|
||||
// Heritage integration
|
||||
import { isSavedSessionStillActive } from "@/helpers/heritage-integration/session-helper";
|
||||
|
|
@ -264,7 +265,7 @@ router.beforeEach(async (to, from, next) => {
|
|||
);
|
||||
// If alert event is on the bus, then display the alert
|
||||
if (alertEvent !== undefined || unknownAlertEvent !== undefined) {
|
||||
store.commit(storeMutations.UPDATE_IS_EXTERNAL_PARAMETER, false);
|
||||
store.commit(storeMutations.UPDATE_IS_EXTERNAL_PARAMETER, externalParameterStatus.INACTIVE);
|
||||
}
|
||||
}
|
||||
// fromPaymentToConfirmation workaround for navigating from an iframe but
|
||||
|
|
@ -540,7 +541,7 @@ async function DisplayPageError() {
|
|||
type: globalEventTypes.Danger,
|
||||
}
|
||||
);
|
||||
store.commit(storeMutations.UPDATE_IS_EXTERNAL_PARAMETER, false);
|
||||
store.commit(storeMutations.UPDATE_IS_EXTERNAL_PARAMETER, externalParameterStatus.INACTIVE);
|
||||
baseMixin.methods.dispatchStoreAction(storeActions.RESET_SAVE_SESSION_PROMISE);
|
||||
const pageError = getQuerystringParameter(queryStrings.PAGE_ERROR);
|
||||
|
||||
|
|
@ -639,7 +640,7 @@ function updateExternalParameterState() {
|
|||
externalParameterModel &&
|
||||
externalParameterStyle
|
||||
) {
|
||||
store.commit(storeMutations.UPDATE_IS_EXTERNAL_PARAMETER, true);
|
||||
store.commit(storeMutations.UPDATE_IS_EXTERNAL_PARAMETER, externalParameterStatus.ACTIVE);
|
||||
store.commit(storeMutations.UPDATE_EXTERNAL_PARAMETER_YEAR, externalParameterYear);
|
||||
store.commit(storeMutations.UPDATE_EXTERNAL_PARAMETER_MAKE, externalParameterMake);
|
||||
store.commit(storeMutations.UPDATE_EXTERNAL_PARAMETER_MODEL, externalParameterModel);
|
||||
|
|
|
|||
|
|
@ -42,6 +42,7 @@ import {
|
|||
coverageTypeEnum,
|
||||
} from "@/constants/insurance";
|
||||
import { containsRecalParts } from "@/helpers/recal-helper";
|
||||
import { externalParameterStatus } from "@/constants/external-parameters";
|
||||
|
||||
// Export State
|
||||
const getDefaultState = () => {
|
||||
|
|
@ -507,7 +508,7 @@ export const mutations = {
|
|||
saveExternalParameterState(externalParameterState);
|
||||
},
|
||||
resetIsExternalParameter(state) {
|
||||
externalParameterState.isExternalParameter = null;
|
||||
externalParameterState.isExternalParameter = externalParameterStatus.INACTIVE;
|
||||
saveExternalParameterState(externalParameterState);
|
||||
},
|
||||
|
||||
|
|
@ -3461,6 +3462,7 @@ async function resetScheduleIfUnavailable(context, order, pageNameToLog) {
|
|||
function createExternalParameterDefaultState() {
|
||||
// create default externalParameter state
|
||||
const externalParameterDefaultState = {
|
||||
isExternalParameter: externalParameterStatus.NOT_SET,
|
||||
vehicle: {
|
||||
year: null,
|
||||
make: null,
|
||||
|
|
|
|||
Loading…
Reference in a new issue