Merge pull request #1324 from Safelite/feature/jzimmerman/INSR-10593

INSR-10593: Adding loss report number from the front end.
This commit is contained in:
Jeremy-Z 2026-08-03 12:48:25 -04:00 committed by GitHub
commit 21a3d58423
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 90 additions and 6 deletions

View file

@ -172,7 +172,8 @@ export const getDefaultState = () => ({
coverageStatus: coverageStatuses.PENDING,
coverageType: coverageType.NONE,
isItacOptimized: false,
claimNumber: null
claimNumber: null,
lossReportNumber: null
},
payment: {
parentAccountNumber: 0,
@ -736,13 +737,31 @@ export const useMainStore = defineStore({
bailoutOnError: false
});
this.order.insuranceCoverage.claimNumber = response.data.claimNumber;
if (response.data.isSuccess) {
this.updateCoverageStatus(coverageStatuses.VERIFIED);
// If register claim at end, then we have loss report number we need to populate.
if ( this.issConfig.callClaimRegistrationAtEnd ) {
if ( response.data.additionalFields?.lossReportNum ) {
this.order.insuranceCoverage.lossReportNumber = response.data.additionalFields.lossReportNum;
}
if ( response.data.additionalFields?.memberNum ) {
// Update member number if it is returned.
this.order.policy.memberNumber = response.data.additionalFields.memberNum;
}
} else {
this.updateCoverageStatus(coverageStatuses.NO_COVERAGE);
// Only set coverage statuses if we are not calling claim registration at end of flow.
if (response.data.isSuccess) {
this.updateCoverageStatus(coverageStatuses.VERIFIED);
} else {
this.updateCoverageStatus(coverageStatuses.NO_COVERAGE);
}
}
} catch (e) {
this.updateCoverageStatus(coverageStatuses.NO_COVERAGE);
// Only set coverage statuses if we are not calling claim registration at end of flow.
if ( !this.issConfig.callClaimRegistrationAtEnd ) {
this.updateCoverageStatus(coverageStatuses.NO_COVERAGE);
}
this.order.insuranceCoverage.claimNumber = null;
}
},
@ -1609,7 +1628,8 @@ export const useMainStore = defineStore({
insuranceCoverage: {
coverageType: insuranceCoverage.coverageType,
coverageStatus: insuranceCoverage.coverageStatus,
claimNumber: insuranceCoverage.claimNumber
claimNumber: insuranceCoverage.claimNumber,
lossReportNumber: insuranceCoverage.lossReportNumber
},
payment: {
parentAccountNumber: this.order.parentAccountNumber ?? this.issConfig.parentAccountNumber,
@ -2039,6 +2059,7 @@ export const useMainStore = defineStore({
this.order.insuranceCoverage.coverageType = coverageType.NONE;
this.order.insuranceCoverage.isItacOptimized = false;
this.order.insuranceCoverage.claimNumber = null;
this.order.insuranceCoverage.lossReportNumber = null;
},
updateGlassFees(feeData) {
if (feeData == null) {

View file

@ -570,6 +570,69 @@ describe('Store', () => {
})
}));
});
it('updates lossReportNumber and memberNumber when claim registration runs at end of flow', async () => {
// Arrange
const returnedLossReportNumber = getRandomString(8, 8);
const returnedMemberNumber = getRandomString(8, 8);
store.issConfig.callClaimRegistrationAtEnd = true;
store.order.insuranceCoverage.coverageStatus = coverageStatuses.PENDING;
store.order.policy.memberNumber = null;
globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.resolve({
data: {
claimNumber: 'CLM123',
isSuccess: false,
additionalFields: {
lossReportNum: returnedLossReportNumber,
memberNum: returnedMemberNumber
}
}
}));
// Act
await store.registerClaim();
// Assert
expect(store.order.insuranceCoverage.claimNumber).toBe('CLM123');
expect(store.order.insuranceCoverage.lossReportNumber).toBe(returnedLossReportNumber);
expect(store.order.policy.memberNumber).toBe(returnedMemberNumber);
expect(store.order.insuranceCoverage.coverageStatus).toBe(coverageStatuses.PENDING);
});
it('does not update coverage status on failed response when claim registration runs at end of flow', async () => {
// Arrange
store.issConfig.callClaimRegistrationAtEnd = true;
store.order.insuranceCoverage.coverageStatus = coverageStatuses.PENDING;
globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.resolve({
data: {
claimNumber: null,
isSuccess: false,
additionalFields: {}
}
}));
// Act
await store.registerClaim();
// Assert
expect(store.order.insuranceCoverage.coverageStatus).toBe(coverageStatuses.PENDING);
});
it('does not update coverage status in catch when claim registration runs at end of flow', async () => {
// Arrange
store.issConfig.callClaimRegistrationAtEnd = true;
store.order.insuranceCoverage.coverageStatus = coverageStatuses.PENDING;
globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.reject(new Error('register claim error')));
// Act
await store.registerClaim();
// Assert
expect(store.order.insuranceCoverage.coverageStatus).toBe(coverageStatuses.PENDING);
expect(store.order.insuranceCoverage.claimNumber).toBeNull();
});
});
describe('updateContactInfo method', () => {