Merge pull request #718 from Safelite/feature/rule-fix

refactor to use correct SQL values
This commit is contained in:
Frank Rua 2022-09-07 09:20:56 -06:00 committed by GitHub
commit a5a7ce6934
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 162 additions and 160 deletions

View file

@ -379,26 +379,28 @@ export const getters = {
payment: (state) => state.order.payment, payment: (state) => state.order.payment,
experimentOrder: (state) => { experimentOrder: (state) => {
return { return {
vehicleYear: state.order.vehicle.year, funnelVehicleYear: state.order.vehicle.year,
vehicleMake: state.order.vehicle.make, funnelVehicleMake: state.order.vehicle.make,
vehicleModel: state.order.vehicle.model, funnelVehicleModel: state.order.vehicle.model,
vehicleStyle: state.order.vehicle.style, funnelVehicleStyle: state.order.vehicle.style,
isRepair: state.order.damage.isRepair, funnelIsRepair: state.order.damage.isRepair,
numberOfChips: state.order.damage.numberOfChips, funnelNumberOfChips: state.order.damage.numberOfChips,
carId: state.order.vehicle.carId, funnelCarId: state.order.vehicle.carId,
serviceCity: state.order.serviceLocation.city, funnelServiceCity: state.order.serviceLocation.city,
serviceState: state.order.serviceLocation.state, funnelServiceState: state.order.serviceLocation.state,
serviceZipCode: state.order.serviceLocation.zipCode, funnelServiceZipCode: state.order.serviceLocation.zipCode,
parentAccountNumber: state.order.accountNumber, funnelParentAccountNumber: state.order.accountNumber,
isCoverageVerified: state.order.payment.insuranceCoverage.isVerified, funnelIsCoverageVerified: state.order.payment.insuranceCoverage.isVerified,
orderPartNumbers: [...getAllValuesOfPropertyInArrayOfObjects(state.order.lineItems.glassParts, "partNumber"), ...getAllValuesOfPropertyInArrayOfObjects(state.order.lineItems.otherParts, "partNumber")], funnelHasRecalibrationPart: getAllValuesOfPropertyInArrayOfObjects(state.order.lineItems.glassParts, "requiresRecalibration")?.length > 0,
orderPartTypes: [...getAllValuesOfPropertyInArrayOfObjects(state.order.lineItems.glassParts, "recalibrationType"), ...getAllValuesOfPropertyInArrayOfObjects(state.order.lineItems.otherParts, "recalibrationType")], funnelSelectedMultiGlass: state.order.damage.glassToReplace?.length > 1,
hasRecalibrationPart: getHasRecalibrationPart(state), funnelSelectedWindshieldGlass: getAllValuesOfPropertyInArrayOfObjects(state.order.damage.glassToReplace, "glassLocation").includes(damageLocationsSelected.WINDSHIELD),
selectedMultiGlass: state.order.damage.glassToReplace?.length > 1, funnelSelectedBackGlass: getAllValuesOfPropertyInArrayOfObjects(state.order.damage.glassToReplace, "glassLocation").includes(damageLocationsSelected.REAR),
selectedWindshieldGlass: getAllValuesOfPropertyInArrayOfObjects(state.order.damage.glassToReplace, "glassLocation").includes(damageLocationsSelected.WINDSHIELD), funnelSelectedDriverSideGlass: getAllValuesOfPropertyInArrayOfObjects(state.order.damage.glassToReplace, "glassLocation").includes(damageLocationsSelected.DRIVER),
selectedBackGlass: getAllValuesOfPropertyInArrayOfObjects(state.order.damage.glassToReplace, "glassLocation").includes(damageLocationsSelected.REAR), funnelSelectedPassengerSideGlass: getAllValuesOfPropertyInArrayOfObjects(state.order.damage.glassToReplace, "glassLocation").includes(damageLocationsSelected.PASSENGER),
selectedDriverSideGlass: getAllValuesOfPropertyInArrayOfObjects(state.order.damage.glassToReplace, "glassLocation").includes(damageLocationsSelected.DRIVER),
selectedPassengerSideGlass: getAllValuesOfPropertyInArrayOfObjects(state.order.damage.glassToReplace, "glassLocation").includes(damageLocationsSelected.PASSENGER) funnelOrderPartNumbers: [...getAllValuesOfPropertyInArrayOfObjects(state.order.lineItems.glassParts, "partNumber"), ...getAllValuesOfPropertyInArrayOfObjects(state.order.lineItems.otherParts, "partNumber")],
funnelOrderPartTypes: [...getAllValuesOfPropertyInArrayOfObjects(state.order.lineItems.glassParts, "recalibrationType"), ...getAllValuesOfPropertyInArrayOfObjects(state.order.lineItems.otherParts, "recalibrationType")],
} }
}, },
experimentSettings: (state) => state.applicationUser.experiments.map(x => x.settings).reduce((r, c) => Object.assign(r, c), {}) ?? {} experimentSettings: (state) => state.applicationUser.experiments.map(x => x.settings).reduce((r, c) => Object.assign(r, c), {}) ?? {}

View file

@ -1299,64 +1299,64 @@ describe("Getters", () => {
// Arrange // Arrange
const storeState = state; const storeState = state;
const mockStateValues = { const mockStateValues = {
vehicleYear: 1000, funnelVehicleYear: 1000,
vehicleMake: "CarMake", funnelVehicleMake: "CarMake",
vehicleModel: "CarModel", funnelVehicleModel: "CarModel",
vehicleStyle: "SuperCoolStyle", funnelVehicleStyle: "SuperCoolStyle",
isRepair: true, funnelIsRepair: true,
numberOfChips: 9999999, funnelNumberOfChips: 9999999,
carId: "Gibberish", funnelCarId: "Gibberish",
serviceCity: "Columbus", funnelServiceCity: "Columbus",
serviceState: "OH-IO", funnelServiceState: "OH-IO",
serviceZipCode: 43215, funnelServiceZipCode: 43215,
parentAccountNumber: "999999", funnelParentAccountNumber: "999999",
isCoverageVerified: true, funnelIsCoverageVerified: true,
glassParts: null, funnelGlassParts: null,
otherParts: null, funnelOtherParts: null,
glassToReplace: null funnelGlassToReplace: null
} }
//Act //Act
mutations.updateYear(storeState, mockStateValues.vehicleYear); mutations.updateYear(storeState, mockStateValues.funnelVehicleYear);
mutations.updateMake(storeState, mockStateValues.vehicleMake); mutations.updateMake(storeState, mockStateValues.funnelVehicleMake);
mutations.updateModel(storeState, mockStateValues.vehicleModel); mutations.updateModel(storeState, mockStateValues.funnelVehicleModel);
mutations.updateStyle(storeState, mockStateValues.vehicleStyle); mutations.updateStyle(storeState, mockStateValues.funnelVehicleStyle);
mutations.updateIsRepair(storeState, mockStateValues.isRepair); mutations.updateIsRepair(storeState, mockStateValues.funnelIsRepair);
mutations.updateNumberOfChips(storeState, mockStateValues.numberOfChips); mutations.updateNumberOfChips(storeState, mockStateValues.funnelNumberOfChips);
mutations.updateCarId(storeState, mockStateValues.carId); mutations.updateCarId(storeState, mockStateValues.funnelCarId);
mutations.updateServiceLocation(storeState, { mutations.updateServiceLocation(storeState, {
city: mockStateValues.serviceCity, city: mockStateValues.funnelServiceCity,
state: mockStateValues.serviceState, state: mockStateValues.funnelServiceState,
zipCode: mockStateValues.serviceZipCode zipCode: mockStateValues.funnelServiceZipCode
}); });
mutations.updateParentAcctNumber(storeState, mockStateValues.parentAccountNumber); mutations.updateParentAcctNumber(storeState, mockStateValues.funnelParentAccountNumber);
mutations.updateInsuranceVerifiedStatus(storeState, mockStateValues.isCoverageVerified); mutations.updateInsuranceVerifiedStatus(storeState, mockStateValues.funnelIsCoverageVerified);
mutations.updateGlassParts(storeState, mockStateValues.glassParts); mutations.updateGlassParts(storeState, mockStateValues.funnelGlassParts);
mutations.updateOtherParts(storeState, mockStateValues.otherParts); mutations.updateOtherParts(storeState, mockStateValues.funnelOtherParts);
mutations.updateGlassToReplace(storeState, mockStateValues.glassToReplace); mutations.updateGlassToReplace(storeState, mockStateValues.funnelGlassToReplace);
//Assert //Assert
expect(getters.experimentOrder(storeState)).toEqual({ expect(getters.experimentOrder(storeState)).toEqual({
vehicleYear: mockStateValues.vehicleYear, funnelVehicleYear: mockStateValues.funnelVehicleYear,
vehicleMake: mockStateValues.vehicleMake, funnelVehicleMake: mockStateValues.funnelVehicleMake,
vehicleModel: mockStateValues.vehicleModel, funnelVehicleModel: mockStateValues.funnelVehicleModel,
vehicleStyle: mockStateValues.vehicleStyle, funnelVehicleStyle: mockStateValues.funnelVehicleStyle,
isRepair: mockStateValues.isRepair, funnelIsRepair: mockStateValues.funnelIsRepair,
numberOfChips: mockStateValues.numberOfChips, funnelNumberOfChips: mockStateValues.funnelNumberOfChips,
carId: mockStateValues.carId, funnelCarId: mockStateValues.funnelCarId,
serviceCity: mockStateValues.serviceCity, funnelServiceCity: mockStateValues.funnelServiceCity,
serviceState: mockStateValues.serviceState, funnelServiceState: mockStateValues.funnelServiceState,
serviceZipCode: mockStateValues.serviceZipCode, funnelServiceZipCode: mockStateValues.funnelServiceZipCode,
parentAccountNumber: mockStateValues.parentAccountNumber, funnelParentAccountNumber: mockStateValues.funnelParentAccountNumber,
isCoverageVerified: mockStateValues.isCoverageVerified, funnelIsCoverageVerified: mockStateValues.funnelIsCoverageVerified,
orderPartNumbers: [], funnelOrderPartNumbers: [],
orderPartTypes: [], funnelOrderPartTypes: [],
hasRecalibrationPart: false, funnelHasRecalibrationPart: false,
selectedMultiGlass: false, funnelSelectedMultiGlass: false,
selectedWindshieldGlass: false, funnelSelectedWindshieldGlass: false,
selectedBackGlass: false, funnelSelectedBackGlass: false,
selectedDriverSideGlass: false, funnelSelectedDriverSideGlass: false,
selectedPassengerSideGlass: false funnelSelectedPassengerSideGlass: false
}); });
}); });
@ -1364,64 +1364,64 @@ describe("Getters", () => {
// Arrange // Arrange
const storeState = state; const storeState = state;
const mockStateValues = { const mockStateValues = {
vehicleYear: 1000, funnelVehicleYear: 1000,
vehicleMake: "CarMake", funnelVehicleMake: "CarMake",
vehicleModel: "CarModel", funnelVehicleModel: "CarModel",
vehicleStyle: "SuperCoolStyle", funnelVehicleStyle: "SuperCoolStyle",
isRepair: true, funnelIsRepair: true,
numberOfChips: 9999999, funnelNumberOfChips: 9999999,
carId: "Gibberish", funnelCarId: "Gibberish",
serviceCity: "Columbus", funnelServiceCity: "Columbus",
serviceState: "OH-IO", funnelServiceState: "OH-IO",
serviceZipCode: 43215, funnelServiceZipCode: 43215,
parentAccountNumber: "999999", funnelParentAccountNumber: "999999",
isCoverageVerified: true, funnelIsCoverageVerified: true,
glassParts: [], funnelGlassParts: [],
otherParts: [], funnelOtherParts: [],
glassToReplace: [] funnelGlassToReplace: []
} }
//Act //Act
mutations.updateYear(storeState, mockStateValues.vehicleYear); mutations.updateYear(storeState, mockStateValues.funnelVehicleYear);
mutations.updateMake(storeState, mockStateValues.vehicleMake); mutations.updateMake(storeState, mockStateValues.funnelVehicleMake);
mutations.updateModel(storeState, mockStateValues.vehicleModel); mutations.updateModel(storeState, mockStateValues.funnelVehicleModel);
mutations.updateStyle(storeState, mockStateValues.vehicleStyle); mutations.updateStyle(storeState, mockStateValues.funnelVehicleStyle);
mutations.updateIsRepair(storeState, mockStateValues.isRepair); mutations.updateIsRepair(storeState, mockStateValues.funnelIsRepair);
mutations.updateNumberOfChips(storeState, mockStateValues.numberOfChips); mutations.updateNumberOfChips(storeState, mockStateValues.funnelNumberOfChips);
mutations.updateCarId(storeState, mockStateValues.carId); mutations.updateCarId(storeState, mockStateValues.funnelCarId);
mutations.updateServiceLocation(storeState, { mutations.updateServiceLocation(storeState, {
city: mockStateValues.serviceCity, city: mockStateValues.funnelServiceCity,
state: mockStateValues.serviceState, state: mockStateValues.funnelServiceState,
zipCode: mockStateValues.serviceZipCode zipCode: mockStateValues.funnelServiceZipCode
}); });
mutations.updateParentAcctNumber(storeState, mockStateValues.parentAccountNumber); mutations.updateParentAcctNumber(storeState, mockStateValues.funnelParentAccountNumber);
mutations.updateInsuranceVerifiedStatus(storeState, mockStateValues.isCoverageVerified); mutations.updateInsuranceVerifiedStatus(storeState, mockStateValues.funnelIsCoverageVerified);
mutations.updateGlassParts(storeState, mockStateValues.glassParts); mutations.updateGlassParts(storeState, mockStateValues.funnelGlassParts);
mutations.updateOtherParts(storeState, mockStateValues.otherParts); mutations.updateOtherParts(storeState, mockStateValues.funnelOtherParts);
mutations.updateGlassToReplace(storeState, mockStateValues.glassToReplace); mutations.updateGlassToReplace(storeState, mockStateValues.funnelGlassToReplace);
//Assert //Assert
expect(getters.experimentOrder(storeState)).toEqual({ expect(getters.experimentOrder(storeState)).toEqual({
vehicleYear: mockStateValues.vehicleYear, funnelVehicleYear: mockStateValues.funnelVehicleYear,
vehicleMake: mockStateValues.vehicleMake, funnelVehicleMake: mockStateValues.funnelVehicleMake,
vehicleModel: mockStateValues.vehicleModel, funnelVehicleModel: mockStateValues.funnelVehicleModel,
vehicleStyle: mockStateValues.vehicleStyle, funnelVehicleStyle: mockStateValues.funnelVehicleStyle,
isRepair: mockStateValues.isRepair, funnelIsRepair: mockStateValues.funnelIsRepair,
numberOfChips: mockStateValues.numberOfChips, funnelNumberOfChips: mockStateValues.funnelNumberOfChips,
carId: mockStateValues.carId, funnelCarId: mockStateValues.funnelCarId,
serviceCity: mockStateValues.serviceCity, funnelServiceCity: mockStateValues.funnelServiceCity,
serviceState: mockStateValues.serviceState, funnelServiceState: mockStateValues.funnelServiceState,
serviceZipCode: mockStateValues.serviceZipCode, funnelServiceZipCode: mockStateValues.funnelServiceZipCode,
parentAccountNumber: mockStateValues.parentAccountNumber, funnelParentAccountNumber: mockStateValues.funnelParentAccountNumber,
isCoverageVerified: mockStateValues.isCoverageVerified, funnelIsCoverageVerified: mockStateValues.funnelIsCoverageVerified,
orderPartNumbers: [], funnelOrderPartNumbers: [],
orderPartTypes: [], funnelOrderPartTypes: [],
hasRecalibrationPart: false, funnelHasRecalibrationPart: false,
selectedMultiGlass: false, funnelSelectedMultiGlass: false,
selectedWindshieldGlass: false, funnelSelectedWindshieldGlass: false,
selectedBackGlass: false, funnelSelectedBackGlass: false,
selectedDriverSideGlass: false, funnelSelectedDriverSideGlass: false,
selectedPassengerSideGlass: false funnelSelectedPassengerSideGlass: false
}); });
}); });
@ -1482,26 +1482,26 @@ describe("Getters", () => {
//Assert //Assert
expect(getters.experimentOrder(storeState)).toEqual({ expect(getters.experimentOrder(storeState)).toEqual({
vehicleYear: mockStateValues.vehicleYear, funnelVehicleYear: mockStateValues.vehicleYear,
vehicleMake: mockStateValues.vehicleMake, funnelVehicleMake: mockStateValues.vehicleMake,
vehicleModel: mockStateValues.vehicleModel, funnelVehicleModel: mockStateValues.vehicleModel,
vehicleStyle: mockStateValues.vehicleStyle, funnelVehicleStyle: mockStateValues.vehicleStyle,
isRepair: mockStateValues.isRepair, funnelIsRepair: mockStateValues.isRepair,
numberOfChips: mockStateValues.numberOfChips, funnelNumberOfChips: mockStateValues.numberOfChips,
carId: mockStateValues.carId, funnelCarId: mockStateValues.carId,
serviceCity: mockStateValues.serviceCity, funnelServiceCity: mockStateValues.serviceCity,
serviceState: mockStateValues.serviceState, funnelServiceState: mockStateValues.serviceState,
serviceZipCode: mockStateValues.serviceZipCode, funnelServiceZipCode: mockStateValues.serviceZipCode,
parentAccountNumber: mockStateValues.parentAccountNumber, funnelParentAccountNumber: mockStateValues.parentAccountNumber,
isCoverageVerified: mockStateValues.isCoverageVerified, funnelIsCoverageVerified: mockStateValues.isCoverageVerified,
orderPartNumbers: ["WINDSHIELDPARTNUMBER"], funnelOrderPartNumbers: ["WINDSHIELDPARTNUMBER"],
orderPartTypes: ["ADAS, maybe"], funnelOrderPartTypes: ["ADAS, maybe"],
hasRecalibrationPart: true, funnelHasRecalibrationPart: true,
selectedMultiGlass: false, funnelSelectedMultiGlass: false,
selectedWindshieldGlass: true, funnelSelectedWindshieldGlass: true,
selectedBackGlass: false, funnelSelectedBackGlass: false,
selectedDriverSideGlass: false, funnelSelectedDriverSideGlass: false,
selectedPassengerSideGlass: false funnelSelectedPassengerSideGlass: false
}); });
}); });
@ -1588,26 +1588,26 @@ describe("Getters", () => {
//Assert //Assert
expect(getters.experimentOrder(storeState)).toEqual({ expect(getters.experimentOrder(storeState)).toEqual({
vehicleYear: mockStateValues.vehicleYear, funnelVehicleYear: mockStateValues.vehicleYear,
vehicleMake: mockStateValues.vehicleMake, funnelVehicleMake: mockStateValues.vehicleMake,
vehicleModel: mockStateValues.vehicleModel, funnelVehicleModel: mockStateValues.vehicleModel,
vehicleStyle: mockStateValues.vehicleStyle, funnelVehicleStyle: mockStateValues.vehicleStyle,
isRepair: mockStateValues.isRepair, funnelIsRepair: mockStateValues.isRepair,
numberOfChips: mockStateValues.numberOfChips, funnelNumberOfChips: mockStateValues.numberOfChips,
carId: mockStateValues.carId, funnelCarId: mockStateValues.carId,
serviceCity: mockStateValues.serviceCity, funnelServiceCity: mockStateValues.serviceCity,
serviceState: mockStateValues.serviceState, funnelServiceState: mockStateValues.serviceState,
serviceZipCode: mockStateValues.serviceZipCode, funnelServiceZipCode: mockStateValues.serviceZipCode,
parentAccountNumber: mockStateValues.parentAccountNumber, funnelParentAccountNumber: mockStateValues.parentAccountNumber,
isCoverageVerified: mockStateValues.isCoverageVerified, funnelIsCoverageVerified: mockStateValues.isCoverageVerified,
orderPartNumbers: ["BACKGLASS_PN", "DRIVERGLASS_PN", "PASSENGERGLASS_PN"], funnelOrderPartNumbers: ["BACKGLASS_PN", "DRIVERGLASS_PN", "PASSENGERGLASS_PN"],
orderPartTypes: [], funnelOrderPartTypes: [],
hasRecalibrationPart: false, funnelHasRecalibrationPart: false,
selectedMultiGlass: true, funnelSelectedMultiGlass: true,
selectedWindshieldGlass: false, funnelSelectedWindshieldGlass: false,
selectedBackGlass: true, funnelSelectedBackGlass: true,
selectedDriverSideGlass: true, funnelSelectedDriverSideGlass: true,
selectedPassengerSideGlass: true funnelSelectedPassengerSideGlass: true
}); });
}); });
}) })