Merge pull request #1106 from Safelite/feature/humphries/INSR-8562
INSR-8562: Fix initialization to properly account for PIA disabled
This commit is contained in:
commit
56ee4adbaa
2 changed files with 27 additions and 49 deletions
|
|
@ -45,7 +45,8 @@ function setupMocks({ customMountOptions = {}, queryString }, mainInitialState =
|
|||
}
|
||||
|
||||
return 'false';
|
||||
})
|
||||
}),
|
||||
savePageDataToStore: jest.fn()
|
||||
}
|
||||
};
|
||||
const cmsMixin = {
|
||||
|
|
@ -84,33 +85,10 @@ describe('payment-method.vue', () => {
|
|||
const wrapper = setupMocks({}, store);
|
||||
|
||||
// Act
|
||||
const paymethod = wrapper.vm.getPaymentMethodFromStore();
|
||||
wrapper.vm.initializeComponent();
|
||||
|
||||
// Assert
|
||||
expect(paymethod).toBe(payLaterMethod);
|
||||
});
|
||||
test('getting payment method when method is pay in advance', async () => {
|
||||
// Arrange
|
||||
const payInAdvanceMethod = paymentMethods.CREDIT_CARD;
|
||||
const store = {
|
||||
order: {
|
||||
payment: {
|
||||
paymentMethod: payInAdvanceMethod
|
||||
},
|
||||
insuranceCoverage: {
|
||||
coverageStatus: coverageStatuses.VERIFIED,
|
||||
coverageType: coverageType.Deductible
|
||||
},
|
||||
currentDeductible: 1000
|
||||
}
|
||||
};
|
||||
const wrapper = setupMocks({}, store);
|
||||
|
||||
// Act
|
||||
const paymethod = wrapper.vm.getPaymentMethodFromStore();
|
||||
|
||||
// Assert
|
||||
expect(paymethod).toBe(payInAdvanceMethod);
|
||||
expect(wrapper.vm.paymentMethod).toBe(payLaterMethod);
|
||||
});
|
||||
test('getting PAY_AT_TIME_OF_SERVICE when deductible is 0', async () => {
|
||||
// Arrange
|
||||
|
|
@ -124,16 +102,18 @@ describe('payment-method.vue', () => {
|
|||
coverageStatus: coverageStatuses.VERIFIED,
|
||||
coverageType: coverageType.Deductible
|
||||
},
|
||||
currentDeductible: 0
|
||||
currentDeductible: {
|
||||
replace: 0
|
||||
}
|
||||
}
|
||||
};
|
||||
const wrapper = setupMocks({}, store);
|
||||
|
||||
// Act
|
||||
const paymethod = wrapper.vm.getPaymentMethodFromStore();
|
||||
wrapper.vm.initializeComponent();
|
||||
|
||||
// Assert
|
||||
expect(paymethod).toBe(payInAdvanceMethod);
|
||||
expect(wrapper.vm.paymentMethod).toBe(payInAdvanceMethod);
|
||||
});
|
||||
test('getting PAY_AT_TIME_OF_SERVICE when Unverified', async () => {
|
||||
// Arrange
|
||||
|
|
@ -147,16 +127,18 @@ describe('payment-method.vue', () => {
|
|||
coverageStatus: coverageStatuses.PENDING,
|
||||
coverageType: coverageType.Deductible
|
||||
},
|
||||
currentDeductible: 1000
|
||||
currentDeductible: {
|
||||
replace: 1000
|
||||
}
|
||||
}
|
||||
};
|
||||
const wrapper = setupMocks({}, store);
|
||||
|
||||
// Act
|
||||
const paymethod = wrapper.vm.getPaymentMethodFromStore();
|
||||
wrapper.vm.initializeComponent();
|
||||
|
||||
// Assert
|
||||
expect(paymethod).toBe(payInAdvanceMethod);
|
||||
expect(wrapper.vm.paymentMethod).toBe(payInAdvanceMethod);
|
||||
});
|
||||
test('getting PAY_AT_TIME_OF_SERVICE when PIA Experiment disabled', async () => {
|
||||
// Arrange
|
||||
|
|
@ -180,16 +162,18 @@ describe('payment-method.vue', () => {
|
|||
coverageStatus: coverageStatuses.VERIFIED,
|
||||
coverageType: coverageType.Deductible
|
||||
},
|
||||
currentDeductible: 1000
|
||||
currentDeductible: {
|
||||
replace: 1000
|
||||
}
|
||||
}
|
||||
};
|
||||
const wrapper = setupMocks({}, store, mixin);
|
||||
|
||||
// Act
|
||||
const paymethod = wrapper.vm.getPaymentMethodFromStore();
|
||||
wrapper.vm.initializeComponent();
|
||||
|
||||
// Assert
|
||||
expect(paymethod).toBe(payInAdvanceMethod);
|
||||
expect(wrapper.vm.paymentMethod).toBe(payInAdvanceMethod);
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -178,6 +178,7 @@ export default {
|
|||
async beforeRouteEnter(to, from, next) {
|
||||
// Call APIs
|
||||
const cmsContentPromise = fetchCmsContentForPage(to.query.issPage);
|
||||
const pageData = useMainStore().pageData(to.query.issPage);
|
||||
|
||||
const promiseResultMap = [
|
||||
{
|
||||
|
|
@ -192,7 +193,7 @@ export default {
|
|||
|
||||
next((vm) => {
|
||||
vm.setCmsContent(resultMap.cmsContent);
|
||||
vm.initializeComponent();
|
||||
vm.initializeComponent(pageData);
|
||||
vm.updateFooterButtonText(vm.customCallToActionButtonCopy);
|
||||
});
|
||||
},
|
||||
|
|
@ -382,26 +383,22 @@ export default {
|
|||
&& customerReqs
|
||||
&& contactInfoReqs);
|
||||
},
|
||||
initializeComponent() {
|
||||
const paymentMethodFromStore = this.getPaymentMethodFromStore();
|
||||
// SMS Opt In defaults to 'no', but we don't actually want to use it if the user hasn't saved data form this page yet
|
||||
if (paymentMethodFromStore) {
|
||||
this.smsOptIn = this.getSMSOptInFromStore();
|
||||
initializeComponent(pageData) {
|
||||
if (pageData) {
|
||||
this.smsOptIn = pageData.smsOptIn;
|
||||
}
|
||||
this.smsPhoneNumber = this.getSMSPhoneFromStore();
|
||||
},
|
||||
getPaymentMethodFromStore() {
|
||||
if (this.isPayInAdvanceDisabled) {
|
||||
return paymentMethods.PAY_AT_TIME_OF_SERVICE;
|
||||
console.log('Pay in Advance is disabled, defaulting to Pay at Time of Service');
|
||||
this.paymentMethod = paymentMethods.PAY_AT_TIME_OF_SERVICE;
|
||||
}
|
||||
|
||||
return useMainStore().order.payment.paymentMethod;
|
||||
},
|
||||
updateFooterButtonText(newValue) {
|
||||
this.$refs.siteFooter.updateButtonText(newValue);
|
||||
},
|
||||
async forwardButtonAction() {
|
||||
this.mainStore.savePaymentMethodChoice(this.paymentMethod);
|
||||
this.savePageDataToStore(issPageValues.PAYMENT_METHOD, { smsOptIn: this.smsOptIn });
|
||||
if (!this.hideSMSOptIn) {
|
||||
const requestTextUpdates = this.smsOptIn === 'Yes';
|
||||
this.mainStore.updateContactInfo({ requestTextUpdates });
|
||||
|
|
@ -439,9 +436,6 @@ export default {
|
|||
this.$route
|
||||
);
|
||||
},
|
||||
getSMSOptInFromStore() {
|
||||
return this.mainStore.contactInfo.requestTextUpdates ? 'Yes' : 'No';
|
||||
},
|
||||
getSMSPhoneFromStore() {
|
||||
return this.mainStore.contactInfo.alternativePhone ?? this.mainStore.contactInfo.servicePhone;
|
||||
},
|
||||
|
|
|
|||
Loading…
Reference in a new issue