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:
AHumphriesSL 2026-02-23 15:29:32 -05:00 committed by GitHub
commit 56ee4adbaa
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 27 additions and 49 deletions

View file

@ -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);
});
});

View file

@ -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;
},