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';
|
return 'false';
|
||||||
})
|
}),
|
||||||
|
savePageDataToStore: jest.fn()
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
const cmsMixin = {
|
const cmsMixin = {
|
||||||
|
|
@ -84,33 +85,10 @@ describe('payment-method.vue', () => {
|
||||||
const wrapper = setupMocks({}, store);
|
const wrapper = setupMocks({}, store);
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
const paymethod = wrapper.vm.getPaymentMethodFromStore();
|
wrapper.vm.initializeComponent();
|
||||||
|
|
||||||
// Assert
|
// Assert
|
||||||
expect(paymethod).toBe(payLaterMethod);
|
expect(wrapper.vm.paymentMethod).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);
|
|
||||||
});
|
});
|
||||||
test('getting PAY_AT_TIME_OF_SERVICE when deductible is 0', async () => {
|
test('getting PAY_AT_TIME_OF_SERVICE when deductible is 0', async () => {
|
||||||
// Arrange
|
// Arrange
|
||||||
|
|
@ -124,16 +102,18 @@ describe('payment-method.vue', () => {
|
||||||
coverageStatus: coverageStatuses.VERIFIED,
|
coverageStatus: coverageStatuses.VERIFIED,
|
||||||
coverageType: coverageType.Deductible
|
coverageType: coverageType.Deductible
|
||||||
},
|
},
|
||||||
currentDeductible: 0
|
currentDeductible: {
|
||||||
|
replace: 0
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
const wrapper = setupMocks({}, store);
|
const wrapper = setupMocks({}, store);
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
const paymethod = wrapper.vm.getPaymentMethodFromStore();
|
wrapper.vm.initializeComponent();
|
||||||
|
|
||||||
// Assert
|
// Assert
|
||||||
expect(paymethod).toBe(payInAdvanceMethod);
|
expect(wrapper.vm.paymentMethod).toBe(payInAdvanceMethod);
|
||||||
});
|
});
|
||||||
test('getting PAY_AT_TIME_OF_SERVICE when Unverified', async () => {
|
test('getting PAY_AT_TIME_OF_SERVICE when Unverified', async () => {
|
||||||
// Arrange
|
// Arrange
|
||||||
|
|
@ -147,16 +127,18 @@ describe('payment-method.vue', () => {
|
||||||
coverageStatus: coverageStatuses.PENDING,
|
coverageStatus: coverageStatuses.PENDING,
|
||||||
coverageType: coverageType.Deductible
|
coverageType: coverageType.Deductible
|
||||||
},
|
},
|
||||||
currentDeductible: 1000
|
currentDeductible: {
|
||||||
|
replace: 1000
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
const wrapper = setupMocks({}, store);
|
const wrapper = setupMocks({}, store);
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
const paymethod = wrapper.vm.getPaymentMethodFromStore();
|
wrapper.vm.initializeComponent();
|
||||||
|
|
||||||
// Assert
|
// Assert
|
||||||
expect(paymethod).toBe(payInAdvanceMethod);
|
expect(wrapper.vm.paymentMethod).toBe(payInAdvanceMethod);
|
||||||
});
|
});
|
||||||
test('getting PAY_AT_TIME_OF_SERVICE when PIA Experiment disabled', async () => {
|
test('getting PAY_AT_TIME_OF_SERVICE when PIA Experiment disabled', async () => {
|
||||||
// Arrange
|
// Arrange
|
||||||
|
|
@ -180,16 +162,18 @@ describe('payment-method.vue', () => {
|
||||||
coverageStatus: coverageStatuses.VERIFIED,
|
coverageStatus: coverageStatuses.VERIFIED,
|
||||||
coverageType: coverageType.Deductible
|
coverageType: coverageType.Deductible
|
||||||
},
|
},
|
||||||
currentDeductible: 1000
|
currentDeductible: {
|
||||||
|
replace: 1000
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
const wrapper = setupMocks({}, store, mixin);
|
const wrapper = setupMocks({}, store, mixin);
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
const paymethod = wrapper.vm.getPaymentMethodFromStore();
|
wrapper.vm.initializeComponent();
|
||||||
|
|
||||||
// Assert
|
// Assert
|
||||||
expect(paymethod).toBe(payInAdvanceMethod);
|
expect(wrapper.vm.paymentMethod).toBe(payInAdvanceMethod);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -178,6 +178,7 @@ export default {
|
||||||
async beforeRouteEnter(to, from, next) {
|
async beforeRouteEnter(to, from, next) {
|
||||||
// Call APIs
|
// Call APIs
|
||||||
const cmsContentPromise = fetchCmsContentForPage(to.query.issPage);
|
const cmsContentPromise = fetchCmsContentForPage(to.query.issPage);
|
||||||
|
const pageData = useMainStore().pageData(to.query.issPage);
|
||||||
|
|
||||||
const promiseResultMap = [
|
const promiseResultMap = [
|
||||||
{
|
{
|
||||||
|
|
@ -192,7 +193,7 @@ export default {
|
||||||
|
|
||||||
next((vm) => {
|
next((vm) => {
|
||||||
vm.setCmsContent(resultMap.cmsContent);
|
vm.setCmsContent(resultMap.cmsContent);
|
||||||
vm.initializeComponent();
|
vm.initializeComponent(pageData);
|
||||||
vm.updateFooterButtonText(vm.customCallToActionButtonCopy);
|
vm.updateFooterButtonText(vm.customCallToActionButtonCopy);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
@ -382,26 +383,22 @@ export default {
|
||||||
&& customerReqs
|
&& customerReqs
|
||||||
&& contactInfoReqs);
|
&& contactInfoReqs);
|
||||||
},
|
},
|
||||||
initializeComponent() {
|
initializeComponent(pageData) {
|
||||||
const paymentMethodFromStore = this.getPaymentMethodFromStore();
|
if (pageData) {
|
||||||
// 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
|
this.smsOptIn = pageData.smsOptIn;
|
||||||
if (paymentMethodFromStore) {
|
|
||||||
this.smsOptIn = this.getSMSOptInFromStore();
|
|
||||||
}
|
}
|
||||||
this.smsPhoneNumber = this.getSMSPhoneFromStore();
|
this.smsPhoneNumber = this.getSMSPhoneFromStore();
|
||||||
},
|
|
||||||
getPaymentMethodFromStore() {
|
|
||||||
if (this.isPayInAdvanceDisabled) {
|
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) {
|
updateFooterButtonText(newValue) {
|
||||||
this.$refs.siteFooter.updateButtonText(newValue);
|
this.$refs.siteFooter.updateButtonText(newValue);
|
||||||
},
|
},
|
||||||
async forwardButtonAction() {
|
async forwardButtonAction() {
|
||||||
this.mainStore.savePaymentMethodChoice(this.paymentMethod);
|
this.mainStore.savePaymentMethodChoice(this.paymentMethod);
|
||||||
|
this.savePageDataToStore(issPageValues.PAYMENT_METHOD, { smsOptIn: this.smsOptIn });
|
||||||
if (!this.hideSMSOptIn) {
|
if (!this.hideSMSOptIn) {
|
||||||
const requestTextUpdates = this.smsOptIn === 'Yes';
|
const requestTextUpdates = this.smsOptIn === 'Yes';
|
||||||
this.mainStore.updateContactInfo({ requestTextUpdates });
|
this.mainStore.updateContactInfo({ requestTextUpdates });
|
||||||
|
|
@ -439,9 +436,6 @@ export default {
|
||||||
this.$route
|
this.$route
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
getSMSOptInFromStore() {
|
|
||||||
return this.mainStore.contactInfo.requestTextUpdates ? 'Yes' : 'No';
|
|
||||||
},
|
|
||||||
getSMSPhoneFromStore() {
|
getSMSPhoneFromStore() {
|
||||||
return this.mainStore.contactInfo.alternativePhone ?? this.mainStore.contactInfo.servicePhone;
|
return this.mainStore.contactInfo.alternativePhone ?? this.mainStore.contactInfo.servicePhone;
|
||||||
},
|
},
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue