CSR-416 Restructure vehicle-damage.spec.js and add claim registration/back button

This commit is contained in:
Katie 2022-05-25 16:16:02 -04:00
parent df859c87ee
commit c648512029
2 changed files with 603 additions and 614 deletions

View file

@ -57,27 +57,7 @@ jest.mock("@/store", () => ({
})); }));
describe("vehicle-damage.vue", () => { describe("vehicle-damage.vue", () => {
test("CarId set, arePagePrerequisitesValid should be true ", async () => { describe("navigation", () => {
//Arrange
const { wrapper } = setupMocks({});
//Act
vehicleDamage.beforeRouteEnter.call(
wrapper.vm,
{ query: { fmgPage: "vehicle-damage" } },
undefined,
(c) => c(wrapper.vm)
);
let arePagePrerequisitesValid = wrapper.vm.arePagePrerequisitesValid();
await nextTick();
//Assert
expect(arePagePrerequisitesValid).toBe(true);
});
});
describe("vehicle-damage.vue", () => {
test("BackButtonAction triggers a router.navigate change", async () => { test("BackButtonAction triggers a router.navigate change", async () => {
//Arrange //Arrange
@ -97,9 +77,7 @@ describe("vehicle-damage.vue", () => {
expect(wrapper.vm.$router.navigate).toHaveBeenCalled(); expect(wrapper.vm.$router.navigate).toHaveBeenCalled();
}); });
});
describe("vehicle-damage.vue", () => {
test("Replace several pieces of glass on ForwardButtonAction triggers a router.navigateAfterSave and saves selections to store", async () => { test("Replace several pieces of glass on ForwardButtonAction triggers a router.navigateAfterSave and saves selections to store", async () => {
//Arrange //Arrange
const partsData = { const partsData = {
@ -186,12 +164,11 @@ describe("vehicle-damage.vue", () => {
expect(store.commit).toBeCalledWith(storeMutations.UPDATE_IS_REPAIR, false); expect(store.commit).toBeCalledWith(storeMutations.UPDATE_IS_REPAIR, false);
expect(store.commit).toBeCalledWith(storeMutations.UPDATE_GLASS_TO_REPLACE, expectedGlassToReplace); expect(store.commit).toBeCalledWith(storeMutations.UPDATE_GLASS_TO_REPLACE, expectedGlassToReplace);
}); });
});
describe("vehicle-damage.vue", () => {
test("Windshield replace with multiple parts on ForwardButtonAction triggers a router.navigateAfterSave and saves selections to store", async () => { test("Windshield replace with multiple parts on ForwardButtonAction triggers a router.navigateAfterSave and saves selections to store", async () => {
//Arrange //Arrange
const partsData = { partsOrQuestions: [ const partsData = {
partsOrQuestions: [
{ {
glassLocation: "Windshield", glassLocation: "Windshield",
glassName: "Single", glassName: "Single",
@ -211,7 +188,8 @@ describe("vehicle-damage.vue", () => {
requiresCapabilityQuestions: false, requiresCapabilityQuestions: false,
requiresRecalibration: false requiresRecalibration: false
} }
]}, ]
},
{ {
glassName: "Stationary", glassName: "Stationary",
glassLocation: "Rear", glassLocation: "Rear",
@ -235,7 +213,8 @@ describe("vehicle-damage.vue", () => {
], ],
"partQuestions": null "partQuestions": null
} }
]}; ]
};
const { wrapper } = setupMocks({ const { wrapper } = setupMocks({
pageHeaderWidgetHeaderText: "", pageHeaderWidgetHeaderText: "",
@ -276,9 +255,58 @@ describe("vehicle-damage.vue", () => {
expect(store.commit).toBeCalledWith(storeMutations.UPDATE_IS_REPAIR, false); expect(store.commit).toBeCalledWith(storeMutations.UPDATE_IS_REPAIR, false);
expect(store.commit).toBeCalledWith(storeMutations.UPDATE_GLASS_TO_REPLACE, expectedGlassToReplace); expect(store.commit).toBeCalledWith(storeMutations.UPDATE_GLASS_TO_REPLACE, expectedGlassToReplace);
}); });
}); });
describe("vehicle-damage.vue", () => { describe("alert", () => {
test("when displayVehicleChangeAlert router params is true, the alert: 'vehicleChangeAlert' should be visible", () => {
// Arrange & Act
const { wrapper } = setupMocks({
mountOptionsMockData: {
route: {
params: {
[routerParams.DISPLAY_VEHICLE_CHANGE_ALERT]: true
}
}
}
});
// Assert
expect(wrapper.findComponent({ ref: 'vehicleChangeAlert' }).isVisible()).toBe(true);
});
test("when displayVehicleChangeAlert router params is false, the alert: 'vehicleChangeAlert' should not be visible", () => {
// Arrange & Act
const { wrapper } = setupMocks({
mountOptionsMockData: {
route: {
params: {
[routerParams.DISPLAY_VEHICLE_CHANGE_ALERT]: false
}
}
}
});
// Assert
expect(wrapper.findComponent({ ref: 'vehicleChangeAlert' }).isVisible()).toBe(false);
});
test("when displayVehicleChangeAlert router params is undefined, the alert: 'vehicleChangeAlert' should not be visible", () => {
// Arrange & Act
const { wrapper } = setupMocks({
mountOptionsMockData: {
route: {
params: {
[routerParams.DISPLAY_VEHICLE_CHANGE_ALERT]: undefined
}
}
}
});
// Assert
expect(wrapper.findComponent({ ref: 'vehicleChangeAlert' }).isVisible()).toBe(false);
})
});
describe("glass selections and corresponding variables", () => {
test("isWindshieldDamageLocation is true when windshield is selected", async () => { test("isWindshieldDamageLocation is true when windshield is selected", async () => {
//Arrange //Arrange
@ -297,9 +325,7 @@ describe("vehicle-damage.vue", () => {
//Assert //Assert
expect(wrapper.vm.isWindshieldDamageLocation).toEqual(true); expect(wrapper.vm.isWindshieldDamageLocation).toEqual(true);
}); });
});
describe("vehicle-damage.vue", () => {
test("isSideDoorDamageLocation is true Side door is selected", async () => { test("isSideDoorDamageLocation is true Side door is selected", async () => {
//Arrange //Arrange
@ -318,10 +344,7 @@ describe("vehicle-damage.vue", () => {
//Assert //Assert
expect(wrapper.vm.isSideDoorDamageLocation).toEqual(true); expect(wrapper.vm.isSideDoorDamageLocation).toEqual(true);
}); });
});
describe("vehicle-damage.vue", () => {
test("isRearWindowDamageLocation is true if Rear Window damage is selected", async () => { test("isRearWindowDamageLocation is true if Rear Window damage is selected", async () => {
//Arrange //Arrange
@ -340,9 +363,7 @@ describe("vehicle-damage.vue", () => {
//Assert //Assert
expect(wrapper.vm.isRearWindowDamageLocation).toEqual(true); expect(wrapper.vm.isRearWindowDamageLocation).toEqual(true);
}); });
});
describe("vehicle-damage.vue", () => {
test("isWindshieldRepair is true if windshield repair is selected", async () => { test("isWindshieldRepair is true if windshield repair is selected", async () => {
//Arrange //Arrange
@ -362,9 +383,7 @@ describe("vehicle-damage.vue", () => {
//Assert //Assert
expect(wrapper.vm.isWindshieldRepair).toEqual(true); expect(wrapper.vm.isWindshieldRepair).toEqual(true);
}); });
});
describe("vehicle-damage.vue", () => {
test("isWindshieldRepair is false if windshield damage is not selected", async () => { test("isWindshieldRepair is false if windshield damage is not selected", async () => {
//Arrange //Arrange
@ -384,9 +403,7 @@ describe("vehicle-damage.vue", () => {
//Assert //Assert
expect(wrapper.vm.isWindshieldRepair).toEqual(false); expect(wrapper.vm.isWindshieldRepair).toEqual(false);
}); });
});
describe("vehicle-damage.vue", () => {
test("isDriverSideReplace is true if side door driver is selected", async () => { test("isDriverSideReplace is true if side door driver is selected", async () => {
//Arrange //Arrange
@ -406,9 +423,7 @@ describe("vehicle-damage.vue", () => {
//Assert //Assert
expect(wrapper.vm.isDriverSideReplace).toEqual(true); expect(wrapper.vm.isDriverSideReplace).toEqual(true);
}); });
});
describe("vehicle-damage.vue", () => {
test("isPassengerSideReplace is true if side door passenger selected", async () => { test("isPassengerSideReplace is true if side door passenger selected", async () => {
//Arrange //Arrange
@ -430,7 +445,26 @@ describe("vehicle-damage.vue", () => {
}); });
}); });
describe("vehicle-damage.vue", () => { describe("state validations", () => {
test("CarId set, arePagePrerequisitesValid should be true ", async () => {
//Arrange
const { wrapper } = setupMocks({});
//Act
vehicleDamage.beforeRouteEnter.call(
wrapper.vm,
{ query: { fmgPage: "vehicle-damage" } },
undefined,
(c) => c(wrapper.vm)
);
let arePagePrerequisitesValid = wrapper.vm.arePagePrerequisitesValid();
await nextTick();
//Assert
expect(arePagePrerequisitesValid).toBe(true);
});
test("Call invalidation, ResetPartsAndState should be called", async () => { test("Call invalidation, ResetPartsAndState should be called", async () => {
//Arrange //Arrange
@ -452,11 +486,38 @@ describe("vehicle-damage.vue", () => {
}); });
}); });
describe("input validations", () => {
// THE FOLLOWING TEST IS NOT NECESSARILY REQUIRED FOR COVERAGE
// BUT KEEP FOR AN EXAMPLE OF A VALIDATION TEST
test("when validation rules are set they should validate correctly", async () => {
//Arrange
const { wrapper } = setupMocks({});
//Act
vehicleDamage.beforeRouteEnter.call(
wrapper.vm,
{ query: { fmgPage: "vehicle-damage" } },
undefined,
(c) => c(wrapper.vm)
);
const testNull = validate("", "replace-options-required");
const testString = validate("sldfj", "replace-options-required");
//Assert
testNull.then(function (data) {
expect(data.valid).toEqual(false);
});
testString.then(function (data) {
expect(data.valid).toEqual(true);
});
});
});
describe("get glass options from store", () => {
const damageLocations = [["Windshield", [damageLocationsSelected.WINDSHIELD]], const damageLocations = [["Windshield", [damageLocationsSelected.WINDSHIELD]],
["Driver", [damageLocationsSelected.SIDEDOOR]], ["Driver", [damageLocationsSelected.SIDEDOOR]],
["Passenger", [damageLocationsSelected.SIDEDOOR]], ["Passenger", [damageLocationsSelected.SIDEDOOR]],
["Rear", [damageLocationsSelected.REARWINDOW]]]; ["Rear", [damageLocationsSelected.REARWINDOW]]];
describe("vehicle-damage.vue", () => {
test.each(damageLocations)("getDamageLocationsFromStore for %s returns expected %s", async (damageLocation, expectedGlass) => { test.each(damageLocations)("getDamageLocationsFromStore for %s returns expected %s", async (damageLocation, expectedGlass) => {
//Arrange //Arrange
@ -476,20 +537,25 @@ describe("vehicle-damage.vue", () => {
//Assert //Assert
expect(glassSelections).toEqual(expectedGlass); expect(glassSelections).toEqual(expectedGlass);
});
}); });
const storeWindshieldOptions = [[1, false, "Windshield", "Single", { selectedWindshieldDamageType: [damageLocationsSelected.REPLACE], const storeWindshieldOptions = [[1, false, "Windshield", "Single", {
selectedWindshieldChipCount: [], selectedWindshieldReplaceOptions: [damageLocationsSelected.SINGLE]}], selectedWindshieldDamageType: [damageLocationsSelected.REPLACE],
[2, false, "Windshield", "Driver", { selectedWindshieldDamageType: [damageLocationsSelected.REPLACE], selectedWindshieldChipCount: [], selectedWindshieldReplaceOptions: [damageLocationsSelected.SINGLE]
selectedWindshieldChipCount: [], selectedWindshieldReplaceOptions: [damageLocationsSelected.DRIVER]}], }],
[3, false, "Windshield", "Passenger", { selectedWindshieldDamageType: [damageLocationsSelected.REPLACE], [2, false, "Windshield", "Driver", {
selectedWindshieldChipCount: [], selectedWindshieldReplaceOptions: [damageLocationsSelected.PASSENGER]}], selectedWindshieldDamageType: [damageLocationsSelected.REPLACE],
[4, true, "", "", { selectedWindshieldDamageType: [damageLocationsSelected.REPAIR], selectedWindshieldChipCount: [], selectedWindshieldReplaceOptions: [damageLocationsSelected.DRIVER]
selectedWindshieldChipCount: [2], selectedWindshieldReplaceOptions: []}] }],
[3, false, "Windshield", "Passenger", {
selectedWindshieldDamageType: [damageLocationsSelected.REPLACE],
selectedWindshieldChipCount: [], selectedWindshieldReplaceOptions: [damageLocationsSelected.PASSENGER]
}],
[4, true, "", "", {
selectedWindshieldDamageType: [damageLocationsSelected.REPAIR],
selectedWindshieldChipCount: [2], selectedWindshieldReplaceOptions: []
}]
]; ];
describe("vehicle-damage.vue", () => {
test.each(storeWindshieldOptions)("getWindshieldOptionsFromStore test #%s", async (testNum, isRepair, damageLocation, damageName, expectedWindshieldOptions) => { test.each(storeWindshieldOptions)("getWindshieldOptionsFromStore test #%s", async (testNum, isRepair, damageLocation, damageName, expectedWindshieldOptions) => {
//Arrange //Arrange
@ -519,8 +585,6 @@ describe("vehicle-damage.vue", () => {
//Assert //Assert
expect(windshieldSelections).toEqual(expectedWindshieldOptions); expect(windshieldSelections).toEqual(expectedWindshieldOptions);
});
}); });
const driverDoorSides = [["Driver", "Front", [damageLocationsSelected.FRONT]], const driverDoorSides = [["Driver", "Front", [damageLocationsSelected.FRONT]],
@ -528,7 +592,6 @@ const driverDoorSides = [["Driver", "Front", [damageLocationsSelected.FRONT]],
["Driver", "Vent", [damageLocationsSelected.VENT]], ["Driver", "Vent", [damageLocationsSelected.VENT]],
["Driver", "Quarter", [damageLocationsSelected.QUARTER]] ["Driver", "Quarter", [damageLocationsSelected.QUARTER]]
]; ];
describe("vehicle-damage.vue", () => {
test.each(driverDoorSides)("getDriverSideReplaceOptionsFromStore for %s-%s returns expected %s", async (damageLocation, damageName, expectedGlass) => { test.each(driverDoorSides)("getDriverSideReplaceOptionsFromStore for %s-%s returns expected %s", async (damageLocation, damageName, expectedGlass) => {
//Arrange //Arrange
@ -550,14 +613,12 @@ describe("vehicle-damage.vue", () => {
expect(glassSelections).toEqual(expectedGlass); expect(glassSelections).toEqual(expectedGlass);
}); });
});
const passengerDoorSides = [["Passenger", "Front", [damageLocationsSelected.FRONT]], const passengerDoorSides = [["Passenger", "Front", [damageLocationsSelected.FRONT]],
["Passenger", "Back", [damageLocationsSelected.BACK]], ["Passenger", "Back", [damageLocationsSelected.BACK]],
["Passenger", "Vent", [damageLocationsSelected.VENT]], ["Passenger", "Vent", [damageLocationsSelected.VENT]],
["Passenger", "Quarter", [damageLocationsSelected.QUARTER]] ["Passenger", "Quarter", [damageLocationsSelected.QUARTER]]
]; ];
describe("vehicle-damage.vue", () => {
test.each(passengerDoorSides)("getPassengerSideReplaceOptionsFromStore for %s-%s returns expected %s", async (damageLocation, damageName, expectedGlass) => { test.each(passengerDoorSides)("getPassengerSideReplaceOptionsFromStore for %s-%s returns expected %s", async (damageLocation, damageName, expectedGlass) => {
//Arrange //Arrange
@ -577,14 +638,11 @@ describe("vehicle-damage.vue", () => {
//Assert //Assert
expect(glassSelections).toEqual(expectedGlass); expect(glassSelections).toEqual(expectedGlass);
});
}); });
const rearReplaceOptions = [["Rear", "Stationary", [damageLocationsSelected.STATIONARY]], const rearReplaceOptions = [["Rear", "Stationary", [damageLocationsSelected.STATIONARY]],
["Rear", "Slider", [damageLocationsSelected.SLIDER]] ["Rear", "Slider", [damageLocationsSelected.SLIDER]]
]; ];
describe("vehicle-damage.vue", () => {
test.each(rearReplaceOptions)("getRearReplaceOptionsFromStore for %s-%s returns expected %s", async (damageLocation, damageName, expectedGlass) => { test.each(rearReplaceOptions)("getRearReplaceOptionsFromStore for %s-%s returns expected %s", async (damageLocation, damageName, expectedGlass) => {
//Arrange //Arrange
@ -604,95 +662,26 @@ describe("vehicle-damage.vue", () => {
//Assert //Assert
expect(glassSelections).toEqual(expectedGlass); expect(glassSelections).toEqual(expectedGlass);
}); });
});
describe("vehicle-damage.vue", () => {
test("when displayVehicleChangeAlert router params is true, the alert: 'vehicleChangeAlert' should be visible", () => {
// Arrange & Act
const { wrapper } = setupMocks({
mountOptionsMockData: {
route: {
params: {
[routerParams.DISPLAY_VEHICLE_CHANGE_ALERT]: true
}
}
}
});
// Assert
expect(wrapper.findComponent({ref: 'vehicleChangeAlert'}).isVisible()).toBe(true);
}) })
});
describe("vehicle-damage.vue", () => {
test("when displayVehicleChangeAlert router params is false, the alert: 'vehicleChangeAlert' should not be visible", () => {
// Arrange & Act
const { wrapper } = setupMocks({
mountOptionsMockData: {
route: {
params: {
[routerParams.DISPLAY_VEHICLE_CHANGE_ALERT]: false
}
}
}
});
// Assert
expect(wrapper.findComponent({ref: 'vehicleChangeAlert'}).isVisible()).toBe(false);
})
});
describe("vehicle-damage.vue", () => {
test("when displayVehicleChangeAlert router params is undefined, the alert: 'vehicleChangeAlert' should not be visible", () => {
// Arrange & Act
const { wrapper } = setupMocks({
mountOptionsMockData: {
route: {
params: {
[routerParams.DISPLAY_VEHICLE_CHANGE_ALERT]: undefined
}
}
}
});
// Assert
expect(wrapper.findComponent({ref: 'vehicleChangeAlert'}).isVisible()).toBe(false);
})
});
describe("vehicle-damage.vue wasDelayedClaimRegistration", () => {
test.todo("if wasDelayedClaimRegistration, should hide back button")
});
// THE FOLLOWING TEST IS NOT NECESSARILY REQUIRED FOR COVERAGE
// BUT KEEP FOR AN EXAMPLE OF A VALIDATION TEST
//
describe("vehicle-damage.vue", () => {
test("when validation rules are set they should validate correctly", async () => {
describe("hide back button", () => {
test.only("if claim registration is delayed => should hide back button", () => {
// Arrange // Arrange
const { wrapper } = setupMocks({}); const { wrapper } = setupMocks({});
cookieHelper.getFunnelCookie = jest.spyOn(cookieHelper, "getFunnelCookie").mockReturnValue({
//Act HasDelayedClaimRegistration: true
vehicleDamage.beforeRouteEnter.call( });
wrapper.vm,
{ query: { fmgPage: "vehicle-damage" } },
undefined,
(c) => c(wrapper.vm)
);
const testNull = validate( "", "replace-options-required");
const testString = validate( "sldfj", "replace-options-required");
// Assert // Assert
testNull.then(function(data) { expect(wrapper.vm.shouldHideBackButton()).toBe(true);
expect(data.valid).toEqual(false);
}); });
testString.then(function(data) {
expect(data.valid).toEqual(true); test.todo("if claim is verified => should hide back button")
}); });
}); });
});
function setupMocks({ pageHeaderWidgetHeaderText, mountOptionsMockData }) { function setupMocks({ pageHeaderWidgetHeaderText, mountOptionsMockData }) {
var pageHeaderWidgetHeaderTextDefault = {}; var pageHeaderWidgetHeaderTextDefault = {};