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,
experimentOrder: (state) => {
return {
vehicleYear: state.order.vehicle.year,
vehicleMake: state.order.vehicle.make,
vehicleModel: state.order.vehicle.model,
vehicleStyle: state.order.vehicle.style,
isRepair: state.order.damage.isRepair,
numberOfChips: state.order.damage.numberOfChips,
carId: state.order.vehicle.carId,
serviceCity: state.order.serviceLocation.city,
serviceState: state.order.serviceLocation.state,
serviceZipCode: state.order.serviceLocation.zipCode,
parentAccountNumber: state.order.accountNumber,
isCoverageVerified: state.order.payment.insuranceCoverage.isVerified,
orderPartNumbers: [...getAllValuesOfPropertyInArrayOfObjects(state.order.lineItems.glassParts, "partNumber"), ...getAllValuesOfPropertyInArrayOfObjects(state.order.lineItems.otherParts, "partNumber")],
orderPartTypes: [...getAllValuesOfPropertyInArrayOfObjects(state.order.lineItems.glassParts, "recalibrationType"), ...getAllValuesOfPropertyInArrayOfObjects(state.order.lineItems.otherParts, "recalibrationType")],
hasRecalibrationPart: getHasRecalibrationPart(state),
selectedMultiGlass: state.order.damage.glassToReplace?.length > 1,
selectedWindshieldGlass: getAllValuesOfPropertyInArrayOfObjects(state.order.damage.glassToReplace, "glassLocation").includes(damageLocationsSelected.WINDSHIELD),
selectedBackGlass: getAllValuesOfPropertyInArrayOfObjects(state.order.damage.glassToReplace, "glassLocation").includes(damageLocationsSelected.REAR),
selectedDriverSideGlass: getAllValuesOfPropertyInArrayOfObjects(state.order.damage.glassToReplace, "glassLocation").includes(damageLocationsSelected.DRIVER),
selectedPassengerSideGlass: getAllValuesOfPropertyInArrayOfObjects(state.order.damage.glassToReplace, "glassLocation").includes(damageLocationsSelected.PASSENGER)
funnelVehicleYear: state.order.vehicle.year,
funnelVehicleMake: state.order.vehicle.make,
funnelVehicleModel: state.order.vehicle.model,
funnelVehicleStyle: state.order.vehicle.style,
funnelIsRepair: state.order.damage.isRepair,
funnelNumberOfChips: state.order.damage.numberOfChips,
funnelCarId: state.order.vehicle.carId,
funnelServiceCity: state.order.serviceLocation.city,
funnelServiceState: state.order.serviceLocation.state,
funnelServiceZipCode: state.order.serviceLocation.zipCode,
funnelParentAccountNumber: state.order.accountNumber,
funnelIsCoverageVerified: state.order.payment.insuranceCoverage.isVerified,
funnelHasRecalibrationPart: getAllValuesOfPropertyInArrayOfObjects(state.order.lineItems.glassParts, "requiresRecalibration")?.length > 0,
funnelSelectedMultiGlass: state.order.damage.glassToReplace?.length > 1,
funnelSelectedWindshieldGlass: getAllValuesOfPropertyInArrayOfObjects(state.order.damage.glassToReplace, "glassLocation").includes(damageLocationsSelected.WINDSHIELD),
funnelSelectedBackGlass: getAllValuesOfPropertyInArrayOfObjects(state.order.damage.glassToReplace, "glassLocation").includes(damageLocationsSelected.REAR),
funnelSelectedDriverSideGlass: getAllValuesOfPropertyInArrayOfObjects(state.order.damage.glassToReplace, "glassLocation").includes(damageLocationsSelected.DRIVER),
funnelSelectedPassengerSideGlass: 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), {}) ?? {}

View file

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