Update unit tests
This commit is contained in:
parent
026bb5383f
commit
c0a26b2a95
1 changed files with 225 additions and 22 deletions
|
|
@ -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;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue