Merge pull request #1309 from Safelite/feature/humphries/INSR-10446
INSR-10446: Update policy number/member number handling
This commit is contained in:
commit
7ea7390b6d
2 changed files with 53 additions and 7 deletions
|
|
@ -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() {
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Reference in a new issue