SSR-1127 Continue flow on load session fail
This commit is contained in:
parent
71fa711843
commit
6c855b73a4
2 changed files with 69 additions and 91 deletions
|
|
@ -1375,90 +1375,83 @@ export const useMainStore = defineStore({
|
||||||
|
|
||||||
async loadSession(duplicate) {
|
async loadSession(duplicate) {
|
||||||
const { order, issConfig } = this;
|
const { order, issConfig } = this;
|
||||||
try {
|
const response = await globalMethods.callHttpClient({
|
||||||
const response = await globalMethods.callHttpClient({
|
method: endpoints.LoadSession.method,
|
||||||
method: endpoints.LoadSession.method,
|
endpoint: endpoints.LoadSession.url,
|
||||||
endpoint: endpoints.LoadSession.url,
|
payload: {
|
||||||
payload: {
|
referralNumber: duplicate.referralNumber,
|
||||||
referralNumber: duplicate.referralNumber,
|
referralDate: duplicate.responseDate,
|
||||||
referralDate: duplicate.responseDate,
|
parentAccountNumber: issConfig.parentAccountNumber,
|
||||||
parentAccountNumber: issConfig.parentAccountNumber,
|
referralCorrelationId: duplicate.correlationId
|
||||||
referralCorrelationId: duplicate.correlationId
|
}
|
||||||
|
});
|
||||||
|
const { data } = response;
|
||||||
|
if (!data) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.isPolicyLookupSuccessful) {
|
||||||
|
order.customer.address.streetAddress = data.customer?.address?.streetAddress;
|
||||||
|
order.customer.address.streetAddress2 = data.customer?.address?.streetAddress2;
|
||||||
|
order.customer.address.city = data.customer?.address?.city;
|
||||||
|
order.customer.address.state = data.customer?.address?.state;
|
||||||
|
order.customer.address.zipCode = data.customer?.address?.zipCode;
|
||||||
|
|
||||||
|
order.contactInfo.firstName = data?.customer?.firstName;
|
||||||
|
order.contactInfo.lastName = data?.customer?.lastName;
|
||||||
|
order.contactInfo.emailAddress = data?.customer?.emailAddress;
|
||||||
|
order.contactInfo.homePhone = data?.customer?.homePhone;
|
||||||
|
order.contactInfo.servicephone = data?.customer?.servicePhone;
|
||||||
|
order.contactInfo.alternativePhone = data?.customer?.alternativePhone;
|
||||||
|
order.contactInfo.requestTextUpdates = data?.customer?.isSmsOptIn;
|
||||||
|
|
||||||
|
if (data.insuranceCoverage) {
|
||||||
|
order.insuranceCoverage.coverageType = data?.insuranceCoverage?.coverageType;
|
||||||
|
order.insuranceCoverage.coverageStatus = data?.insuranceCoverage?.coverageStatus;
|
||||||
|
order.insuranceCoverage.claimNumber = data?.insuranceCoverage?.claimNumber;
|
||||||
|
} else if (data?.payment?.insuranceCoverage) {
|
||||||
|
if (data?.payment?.insuranceCoverage?.isVerified) {
|
||||||
|
order.insuranceCoverage.coverageStatus = coverageStatuses.VERIFIED;
|
||||||
}
|
}
|
||||||
});
|
order.insuranceCoverage.claimNumber = data?.payment?.insuranceCoverage?.claimNumber;
|
||||||
const { data } = response;
|
|
||||||
if (!data) {
|
|
||||||
// TODO how should we handle this case?
|
|
||||||
return response;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.isPolicyLookupSuccessful) {
|
if (order.policy.vehicles.length !== 0 && data.vehicle?.carId) {
|
||||||
order.customer.address.streetAddress = data.customer?.address?.streetAddress;
|
order.vehicle.registration.licensePlate = data?.vehicle?.licensePlateNumber;
|
||||||
order.customer.address.streetAddress2 = data.customer?.address?.streetAddress2;
|
if (data.vehicle.vin) {
|
||||||
order.customer.address.city = data.customer?.address?.city;
|
const vehicle = order.policy.vehicles.find((v) => v.vin === data.vehicle.vin);
|
||||||
order.customer.address.state = data.customer?.address?.state;
|
if (vehicle) {
|
||||||
order.customer.address.zipCode = data.customer?.address?.zipCode;
|
const vehicleResponse = await this.lookupVehicleByVin(vehicle.vin);
|
||||||
|
if (vehicleResponse) {
|
||||||
order.contactInfo.firstName = data?.customer?.firstName;
|
this.updateVehicle({
|
||||||
order.contactInfo.lastName = data?.customer?.lastName;
|
...vehicleResponse.data,
|
||||||
order.contactInfo.emailAddress = data?.customer?.emailAddress;
|
policyVehicleId: vehicle.id,
|
||||||
order.contactInfo.homePhone = data?.customer?.homePhone;
|
vin: vehicle.vin
|
||||||
order.contactInfo.servicephone = data?.customer?.servicePhone;
|
});
|
||||||
order.contactInfo.alternativePhone = data?.customer?.alternativePhone;
|
this.updateVehicleCoverage({
|
||||||
order.contactInfo.requestTextUpdates = data?.customer?.isSmsOptIn;
|
noCoverage: noCoverageForSelectedVehicle(vehicle),
|
||||||
|
deductible: deductibleForSelectedVehicle(vehicle),
|
||||||
if (data.insuranceCoverage) {
|
repairWaived: repairWaivedForSelectedVehicle(vehicle),
|
||||||
order.insuranceCoverage.coverageType = data?.insuranceCoverage?.coverageType;
|
endorsements: endorsementsForSelectedVehicle(vehicle)
|
||||||
order.insuranceCoverage.coverageStatus = data?.insuranceCoverage?.coverageStatus;
|
});
|
||||||
order.insuranceCoverage.claimNumber = data?.insuranceCoverage?.claimNumber;
|
|
||||||
} else if (data?.payment?.insuranceCoverage) {
|
|
||||||
if (data?.payment?.insuranceCoverage?.isVerified) {
|
|
||||||
order.insuranceCoverage.coverageStatus = coverageStatuses.VERIFIED;
|
|
||||||
}
|
|
||||||
order.insuranceCoverage.claimNumber = data?.payment?.insuranceCoverage?.claimNumber;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (order.policy.vehicles.length !== 0 && data.vehicle?.carId) {
|
|
||||||
order.vehicle.registration.licensePlate = data?.vehicle?.licensePlateNumber;
|
|
||||||
if (data.vehicle.vin) {
|
|
||||||
const vehicle = order.policy.vehicles.find((v) => v.vin === data.vehicle.vin);
|
|
||||||
if (vehicle) {
|
|
||||||
const vehicleResponse = await this.lookupVehicleByVin(vehicle.vin);
|
|
||||||
if (vehicleResponse) {
|
|
||||||
this.updateVehicle({
|
|
||||||
...vehicleResponse.data,
|
|
||||||
policyVehicleId: vehicle.id,
|
|
||||||
vin: vehicle.vin
|
|
||||||
});
|
|
||||||
this.updateVehicleCoverage({
|
|
||||||
noCoverage: noCoverageForSelectedVehicle(vehicle),
|
|
||||||
deductible: deductibleForSelectedVehicle(vehicle),
|
|
||||||
repairWaived: repairWaivedForSelectedVehicle(vehicle),
|
|
||||||
endorsements: endorsementsForSelectedVehicle(vehicle)
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
order.vehicle.year = data.vehicle.year;
|
|
||||||
order.vehicle.make = data.vehicle.make;
|
|
||||||
order.vehicle.model = data.vehicle.model;
|
|
||||||
order.vehicle.style = data.vehicle.style;
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
order.referralNumber = data?.referralNumber;
|
order.vehicle.year = data.vehicle.year;
|
||||||
order.referralDate = data?.referralDate;
|
order.vehicle.make = data.vehicle.make;
|
||||||
order.referralCorrelationId = data?.referralCorrelationId;
|
order.vehicle.model = data.vehicle.model;
|
||||||
order.referralSequenceNumber = data?.referralSequenceNumber;
|
order.vehicle.style = data.vehicle.style;
|
||||||
order.eon = data?.eon;
|
}
|
||||||
order.loadedFromDupeCheck = true;
|
|
||||||
order.loadedSessionClearedPreviousData = false;
|
|
||||||
return data;
|
|
||||||
} catch (ex) {
|
|
||||||
// TODO how should we handle this case?
|
|
||||||
throw ex;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
order.referralNumber = data?.referralNumber;
|
||||||
|
order.referralDate = data?.referralDate;
|
||||||
|
order.referralCorrelationId = data?.referralCorrelationId;
|
||||||
|
order.referralSequenceNumber = data?.referralSequenceNumber;
|
||||||
|
order.eon = data?.eon;
|
||||||
|
order.loadedFromDupeCheck = true;
|
||||||
|
order.loadedSessionClearedPreviousData = false;
|
||||||
},
|
},
|
||||||
updateCreditCardToken(token) {
|
updateCreditCardToken(token) {
|
||||||
this.order.payment.creditCardToken.subscriptionId = token.subscriptionId;
|
this.order.payment.creditCardToken.subscriptionId = token.subscriptionId;
|
||||||
|
|
|
||||||
|
|
@ -1107,21 +1107,6 @@ describe('Store', () => {
|
||||||
endpoint: endpoints.LoadSession.url
|
endpoint: endpoints.LoadSession.url
|
||||||
}));
|
}));
|
||||||
});
|
});
|
||||||
it('Returns expected response object', async () => {
|
|
||||||
// Arrange
|
|
||||||
const response = { data: { ReferralNumber: getRandomString(6, 6) } };
|
|
||||||
globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.resolve(response));
|
|
||||||
const duplicate = {
|
|
||||||
referralNumber: getRandomString(6, 6),
|
|
||||||
referralCorrelationId: getRandomGuid()
|
|
||||||
};
|
|
||||||
|
|
||||||
// Act
|
|
||||||
const result = store.loadSession(duplicate);
|
|
||||||
|
|
||||||
// Asserts
|
|
||||||
await expect(result).resolves.toBe(response.data);
|
|
||||||
});
|
|
||||||
it('sets expected vehicle data', async () => {
|
it('sets expected vehicle data', async () => {
|
||||||
// Arrange
|
// Arrange
|
||||||
globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.resolve(fullApiResponse));
|
globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.resolve(fullApiResponse));
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue