Merge pull request #1309 from Safelite/feature/humphries/INSR-10446

INSR-10446: Update policy number/member number handling
This commit is contained in:
AHumphriesSL 2026-07-21 15:47:40 -04:00 committed by GitHub
commit 7ea7390b6d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 53 additions and 7 deletions

View file

@ -118,7 +118,8 @@ export const getDefaultState = () => ({
cvrgEndorsementCode: null,
status: null,
policyData: null,
policyLookupErrorCode: 0
policyLookupErrorCode: 0,
memberNumber: null
},
customer: {
address: {
@ -585,9 +586,9 @@ export const useMainStore = defineStore({
referralCorrelationId: order.referralCorrelationId,
referralNumber: order.referralNumber
};
// Clients (i.e. USAA) may sometimes use member number, which is just policy number by a different name
// Clients (i.e. USAA) may sometimes use member number in addition to a policy number
if (this.issConfig.useMemberNumber) {
payload.memberNumber = policy.policyNumber;
payload.memberNumber = policy.memberNumber ?? policy.policyNumber;
}
const response = await globalMethods.callHttpClient({
method: endpoints.CoveragePolicyInfo.method,
@ -617,6 +618,15 @@ export const useMainStore = defineStore({
// populate additional fields
order.policy.policyData = responsePolicy.policyData;
if (this.issConfig.useMemberNumber) {
if (!order.policy.memberNumber) {
// We capture the member number (entered as policy number) once, so we don't overwrite it with returned policy number on subsequent lookups
order.policy.memberNumber = order.policy.policyNumber;
}
if (responsePolicy.policyNumber != null) {
order.policy.policyNumber = responsePolicy.policyNumber;
}
}
// populate vehicles
order.policy.vehicles = responsePolicy.vehicles ?? [];
@ -714,9 +724,9 @@ export const useMainStore = defineStore({
fleetNumber: this.order.vehicle.fleetNumber,
fleetUnitNumber: this.order.vehicle.fleetUnitNumber
};
// Clients (i.e. USAA) may sometimes use member number, which is just policy number by a different name
// Clients (i.e. USAA) may sometimes use member number in addition to a policy number
if (this.issConfig.useMemberNumber) {
payload.memberNumber = this.order.policy.policyNumber;
payload.memberNumber = this.order.policy.memberNumber ?? this.order.policy.policyNumber;
}
await updateClientSpecificFieldsForClaimRegistration(payload, this.order);
const response = await globalMethods.callHttpClient({
@ -775,9 +785,9 @@ export const useMainStore = defineStore({
policyData: this.order.policy.policyData,
isItac: this.isITAC
};
// Clients (i.e. USAA) may sometimes use member number, which is just policy number by a different name
// Clients (i.e. USAA) may sometimes use member number in addition to a policy number
if (this.issConfig.useMemberNumber) {
payload.memberNumber = this.order.policy.policyNumber;
payload.memberNumber = this.order.policy.memberNumber ?? this.order.policy.policyNumber;
}
try {
@ -2207,6 +2217,7 @@ export const useMainStore = defineStore({
this.order.policy.policyLookupErrorCode = 0;
this.order.policy.deductible.repair = null;
this.order.policy.deductible.replace = null;
this.order.policy.memberNumber = null;
},
resetPayment() {

View file

@ -1496,6 +1496,41 @@ describe('Store', () => {
})
}));
});
it('useMemberNumber is true => member number set and policy number changed after response', async () => {
// Arrange
const originalPolicyNumber = getRandomString(6, 6);
store.order.policy.policyNumber = originalPolicyNumber;
const returnedPolicyNumber = getRandomString(6, 6);
const responseWithPolicy = {
data: {
policies: [{
policyNumber: returnedPolicyNumber
}]
}
};
store.issConfig.isCoverageEnabled = true;
store.applicationUser.coverageLookupAttempts = 0;
store.issConfig.useMemberNumber = true;
globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.resolve(responseWithPolicy));
// Act
await store.getCoveragePolicyInfo();
// Asserts
expect(store.order.policy.memberNumber).toBe(originalPolicyNumber);
expect(store.order.policy.policyNumber).toBe(returnedPolicyNumber);
// Act again
await store.getCoveragePolicyInfo();
// Assert again
expect(globalMethods.callHttpClient).toHaveBeenNthCalledWith(2, expect.objectContaining({
payload: expect.objectContaining({
policyNumber: returnedPolicyNumber,
memberNumber: originalPolicyNumber
})
}));
});
it('null response by api => insuranceCoverage.coverageType is NONE', async () => {
// Arrange
store.issConfig.isCoverageEnabled = true;