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

View file

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