Update unit tests

This commit is contained in:
Chloe Herd 2024-02-15 12:00:51 -05:00
parent 026bb5383f
commit c0a26b2a95

View file

@ -38,27 +38,38 @@ const parts = {
requiresRecalibration: true, requiresRecalibration: true,
salesTax: 63.86, salesTax: 63.86,
sellingPrice: 791.46, sellingPrice: 791.46,
kitPrice: 0,
laborAmount: 0,
}, },
frontWipers: { frontWipers: {
name: "front wipers", name: "front wipers",
partNumber: "SBB16", partNumber: "SBB16",
description: "SAFELITE BEAM BLADE 16", description: "SAFELITE BEAM BLADE 16",
partType: "FRONT WIPER", partType: "FRONT WIPER",
price: 32.64, sellingPrice: 32.64,
kitPrice: 0,
laborAmount: 0,
salesTax: 1,
}, },
rearWipers: { rearWipers: {
name: "rear wipers", name: "rear wipers",
partNumber: "SBBR12A", partNumber: "SBBR12A",
description: "SAFELITE REAR BLADE 12A", description: "SAFELITE REAR BLADE 12A",
partType: "REAR WIPER", partType: "REAR WIPER",
price: 24.48, sellingPrice: 24.48,
kitPrice: 0,
laborAmount: 0,
salesTax: 2,
}, },
rainDefense: { rainDefense: {
name: "rain defense", name: "rain defense",
partNumber: "RAIN DEFENSE", partNumber: "RAIN DEFENSE",
description: null, description: null,
partType: "RAIN DEFENSE", partType: "RAIN DEFENSE",
price: 35.5, sellingPrice: 35.5,
kitPrice: 0,
laborAmount: 0,
salesTax: 0,
}, },
}; };
@ -324,10 +335,10 @@ describe("analyticsMixin.js", () => {
]); ]);
}); });
describe("pushSubmittedOrderToDataLayer", () => { describe("pushOrderToDataLayer", () => {
beforeEach(() => { beforeEach(() => {
store.getters.hasSubmittedOrder = true; store.getters.hasSubmittedOrder = false;
store.getters.submittedOrder = { store.getters.order = {
vehicle: { vehicle: {
year: "2020", year: "2020",
make: "acura", make: "acura",
@ -342,8 +353,8 @@ describe("analyticsMixin.js", () => {
address2: "add2", address2: "add2",
city: "city", city: "city",
state: "state", state: "state",
zipCode: "zip", zipCode: "11111",
zipCodeCtu: "zipCtu", zipCodeCtu: "11110",
appointmentType: "IN_SHOP", appointmentType: "IN_SHOP",
isVehicleProtected: true, isVehicleProtected: true,
provider: { provider: {
@ -352,8 +363,8 @@ describe("analyticsMixin.js", () => {
streetAddress: "add3", streetAddress: "add3",
city: "city2", city: "city2",
state: "state2", state: "state2",
zipCode: "zip2", zipCode: "22222",
zipCodeCtu: "zipCtu2", zipCodeCtu: "22220",
}, },
}, },
techNotes: "", techNotes: "",
@ -368,13 +379,28 @@ describe("analyticsMixin.js", () => {
damage: { damage: {
isRepair: false, isRepair: false,
numberOfChips: null, numberOfChips: null,
glassToReplace: [{ glassName: "single", location: "windshield" }], glassToReplace: [{ glassName: "single", glassLocation: "windshield" }],
}, },
lineItems: { lineItems: {
glassParts: [parts.windshield], glassParts: [parts.windshield],
supportingItems: [], supportingItems: [],
vaps: [parts.frontWipers], vaps: [parts.frontWipers],
promos: [{ promoCode: "promoTEST" }, { promoCode: "promoTEST2" }], promos: [
{
promoCode: "promoTEST",
kitPrice: 0,
sellingPrice: 0,
laborAmount: 0,
salesTax: 0,
},
{
promoCode: "promoTEST2",
kitPrice: 0,
sellingPrice: 0,
laborAmount: 0,
salesTax: 0,
},
],
}, },
payment: { payment: {
isInsurance: false, isInsurance: false,
@ -397,6 +423,8 @@ describe("analyticsMixin.js", () => {
workOrderNumber: "01820-111111", workOrderNumber: "01820-111111",
workOrderId: "222222222222", workOrderId: "222222222222",
}; };
store.getters.isRecalibrationOnOrder = true;
store.getters.isRecalibrationOnSubmittedOrder = false;
}); });
test("Pushes to data layer if nominal", () => { test("Pushes to data layer if nominal", () => {
@ -408,28 +436,203 @@ describe("analyticsMixin.js", () => {
}; };
// Act // Act
analyticsMixin.methods.pushSubmittedOrderToDataLayer(); analyticsMixin.methods.pushOrderToDataLayer();
// Assert // Assert
expect(mockDataLayerFn).toHaveBeenCalled(); expect(mockDataLayerFn).toHaveBeenCalled();
}); });
test("Does not push to data layer if no submitted order available.", () => { test("Pushes populated data to data layer", () => {
// Arrange // Arrange
store.getters.hasSubmittedOrder = false; window.dataLayer = [];
store.getters.submittedOrder = undefined;
const mockDataLayerFn = jest.fn(); // Act
analyticsMixin.methods.pushOrderToDataLayer();
window.dataLayer = { const result = window.dataLayer[0];
push: mockDataLayerFn,
// Assert
console.log(result);
const allFieldsPopulated = Object.keys(result).every(
(key) => result[key] === false || !!result[key]
);
expect(allFieldsPopulated).toBe(true);
});
test("Pushes correct data when submitted order is present", () => {
// Arrange
window.dataLayer = [];
store.getters.hasSubmittedOrder = true;
store.getters.submittedOrder = store.getters.order;
store.getters.order = {
vehicle: {
year: null,
make: null,
model: null,
style: null,
carId: null,
category: null,
vin: null,
},
serviceLocation: {
address: null,
address2: null,
city: null,
state: null,
zipCode: null,
zipCodeCtu: null,
appointmentType: null,
isVehicleProtected: null,
provider: {
providerNumber: null,
address: {
streetAddress: null,
city: null,
state: null,
zipCode: null,
zipCodeCtu: null,
},
},
techNotes: null,
},
customer: {
firstName: null,
lastName: null,
emailAddress: null,
phoneNumber: null,
isSmsOptIn: null,
},
damage: {
isRepair: null,
numberOfChips: null,
glassToReplace: null,
},
lineItems: {
glassParts: null,
supportingItems: null,
vaps: null,
promos: null,
},
payment: {
isInsurance: null,
insuranceCoverage: {
isVerified: null,
coverageStatus: null,
coverageVerificationType: null,
},
isPia: null,
piaType: null,
inactivePromos: null,
},
schedule: {
date: null,
startTime: null,
endTime: null,
jobMinMinutes: null,
jobMaxMinutes: null,
},
workOrderNumber: null,
workOrderId: null,
}; };
// Act // Act
analyticsMixin.methods.pushSubmittedOrderToDataLayer(); analyticsMixin.methods.pushOrderToDataLayer();
const result = window.dataLayer[0];
// Assert // Assert
expect(mockDataLayerFn).not.toHaveBeenCalled(); console.log(result);
const allFieldsPopulated = Object.keys(result).every(
(key) => result[key] === false || !!result[key]
);
expect(allFieldsPopulated).toBe(true);
});
test("Pushes default values when data is missing", () => {
// Arrange
window.dataLayer = [];
store.getters.order = {
vehicle: {
year: null,
make: null,
model: null,
style: null,
carId: null,
category: null,
vin: null,
},
serviceLocation: {
address: null,
address2: null,
city: null,
state: null,
zipCode: null,
zipCodeCtu: null,
appointmentType: null,
isVehicleProtected: null,
provider: {
providerNumber: null,
address: {
streetAddress: null,
city: null,
state: null,
zipCode: null,
zipCodeCtu: null,
},
},
techNotes: null,
},
customer: {
firstName: null,
lastName: null,
emailAddress: null,
phoneNumber: null,
isSmsOptIn: null,
},
damage: {
isRepair: null,
numberOfChips: null,
glassToReplace: null,
},
lineItems: {
glassParts: null,
supportingItems: null,
vaps: null,
promos: null,
},
payment: {
isInsurance: null,
insuranceCoverage: {
isVerified: null,
coverageStatus: null,
coverageVerificationType: null,
},
isPia: null,
piaType: null,
inactivePromos: null,
},
schedule: {
date: null,
startTime: null,
endTime: null,
jobMinMinutes: null,
jobMaxMinutes: null,
},
workOrderNumber: null,
workOrderId: null,
};
// Act
analyticsMixin.methods.pushOrderToDataLayer();
const result = window.dataLayer[0];
// Assert
console.log(result);
const allFieldsPopulatedOrDefault = Object.keys(result).every(
(key) => result[key] === false || !!result[key] || result[key] === ""
);
expect(allFieldsPopulatedOrDefault).toBe(true);
}); });
test("Glass and Promo strings correctly formatted", () => { test("Glass and Promo strings correctly formatted", () => {
@ -437,7 +640,7 @@ describe("analyticsMixin.js", () => {
window.dataLayer = []; window.dataLayer = [];
// Act // Act
analyticsMixin.methods.pushSubmittedOrderToDataLayer(); analyticsMixin.methods.pushOrderToDataLayer();
// Assert // Assert
const glassString = window.dataLayer[0].glassToReplace; const glassString = window.dataLayer[0].glassToReplace;