updates to welcome-page navigation

This commit is contained in:
Katie Kroell 2023-05-12 14:30:38 -04:00
parent c5e051874d
commit 3561d85fd9
2 changed files with 74 additions and 29 deletions

View file

@ -62,13 +62,21 @@ describe("navigation", () => {
];
const { wrapper } = setupMocks({
policies: [{}]
policies: [{
vehicles: [
{
vin: "TEST_VIN"
},
{
vin: "TEST_VIN2"
}
]
}]
});
await wrapper.setData({
isCoverageEnabled: true,
vehiclesCount: 2,
vehiclesFound: mockvehicles,
zipCodeMatch: true,
});
useMainStore().order.policy.policyNumber = "p_0001";
@ -97,6 +105,7 @@ describe("navigation", () => {
isCoverageEnabled: true,
vehiclesCount: 0,
vehiclesFound: null,
zipCodeMatch: true,
});
useMainStore().order.policy.policyNumber = "p_0001";
@ -116,11 +125,11 @@ describe("navigation", () => {
test("if policy is not found, navigate to policy-holder-details page", async () => {
// Arrange
const { wrapper } = setupMocks({
policies: undefined
policies: null
});
await wrapper.setData({
isCoverageEnabled : true,
isCoverageEnabled: true,
});
useMainStore().order.policy.policyNumber = "p_0001";
@ -128,7 +137,7 @@ describe("navigation", () => {
useMainStore().order.accountNumber = "00000";
// Act
await wrapper.vm.forwardButtonAction();
await wrapper.vm.navigateForward();
// Assert
expect(wrapper.vm.$router.navigate).toHaveBeenCalledWith(
@ -136,6 +145,31 @@ describe("navigation", () => {
undefined
);
});
test("if zip code entered does not match zip on policy, navigate to policy-holder-details page", async () => {
// Arrange
const { wrapper } = setupMocks({
policies: [{}]
});
await wrapper.setData({
isCoverageEnabled: true,
zipCodeMatch: false,
});
useMainStore().order.policy.policyNumber = "p_0001";
useMainStore().order.policy.dateOfLoss = "2022-01-28";
useMainStore().order.accountNumber = "00000";
// Act
await wrapper.vm.navigateForward();
// Assert
expect(wrapper.vm.$router.navigate).toHaveBeenCalledWith(
navigationScenarios.CLICKED_FORWARD_WITH_NO_POLICY,
undefined
);
});
});
function setupMocks({
@ -143,15 +177,20 @@ function setupMocks({
pageFooterWidgetCmsContent = {},
mountOptionsMockData = {},
policies = [],
lookupPolicyResponse
getCoveragePolicyInfoResponse
}) {
useMainStore().getCoveragePolicyInfo = jest.fn().mockImplementation(() => {
return Promise.resolve({
data: lookupPolicyResponse
? lookupPolicyResponse
data: getCoveragePolicyInfoResponse
? getCoveragePolicyInfoResponse
: {
policies: [
{
insureds: [
{
customerId: "TEST_ID"
},
],
vehicles: [
{
vin: "TEST_VIN"

View file

@ -205,6 +205,7 @@ export default {
return {
welcomePageModel: this.getWelcomePageModelFromStore(),
vehiclesFound: [],
zipCodeMatch: false,
};
},
setup() {
@ -259,13 +260,18 @@ export default {
const policyLookupResultMap = await settleAllPromises(promisePolicyLookupResultMap);
const policyInfo = policyLookupResultMap.policyLookupResponse;
// if policy lookup fails, move the user forward
// if policy lookup fails, navigate to policy-holder-details page
if (!policyInfo) {
this.navigateForward();
}
const policy = policyInfo.policies?.[0];
if (policy) {
// get the first 5 digits of the policy zip code
const policyZip = (policy.insureds?.[0]?.zipCode).slice(0, 5);
// check if policy zip enters matches zip on policy
this.zipCodeMatch = policyZip == this.welcomePageModel.policyZipCode;
if (policy && this.zipCodeMatch) {
//populate policy holder details from policy lookup
this.mainStore.order.customer.address.streetAddress = policy.insureds?.[0]?.address;
this.mainStore.order.customer.address.city = policy.insureds?.[0]?.city;
@ -277,14 +283,29 @@ export default {
//populate vehicles
this.vehiclesFound = policy.vehicles;
}
return this.navigateForward(policy);
return this.navigateForward(policy, this.zipCodeMatch);
}
return this.navigateForward();
},
navigateForward(policy) {
navigateForward(policy, zipCodeMatch) {
// if policy lookup is unsuccessful, navigate to policy-holder-details page
if (!policy || !zipCodeMatch) {
this.$router.navigate(
this.navigationScenarios.CLICKED_FORWARD_WITH_NO_POLICY,
this.$route
);
}
// if policy lookup is successful, but no vehicles are associated with the policy
// navigate to vehicle-selection page (manual entry)
else if (policy && zipCodeMatch && !this.vehiclesFound) {
this.$router.navigate(
this.navigationScenarios.CLICKED_FORWARD_WITH_POLICY_AND_NO_VEHICLES,
this.$route
);
}
// if policy lookup is successful and vehicles are found, navigate to policy-vehicles page
if (policy && this.vehiclesFound) {
else if (policy && zipCodeMatch && this.vehiclesFound) {
this.$router.navigate(
this.navigationScenarios.CLICKED_FORWARD_WITH_POLICY_AND_VEHICLES,
this.$route,
@ -293,21 +314,6 @@ export default {
this.vehiclesFound
);
}
// if policy lookup is successful, but no vehicles are associated with the policy
// navigate to vehicle-selection page (manual entry)
else if (policy && !this.vehiclesFound) {
this.$router.navigate(
this.navigationScenarios.CLICKED_FORWARD_WITH_POLICY_AND_NO_VEHICLES,
this.$route
);
}
// if policy lookup is unsuccessful, navigate to policy-holder-details page
else {
this.$router.navigate(
this.navigationScenarios.CLICKED_FORWARD_WITH_NO_POLICY,
this.$route
);
}
},
getWelcomePageModelFromStore() {