Test coverage
This commit is contained in:
parent
5aa51fa8ca
commit
3893e3ae2d
1 changed files with 164 additions and 0 deletions
|
|
@ -22,6 +22,46 @@ import {
|
|||
getUserIdValue,
|
||||
} from "@/helpers/heritage-integration/cookie-helper";
|
||||
|
||||
const parts = {
|
||||
windshield: {
|
||||
name: "windshield",
|
||||
canSafeliteRecalibrate: true,
|
||||
childParts: [],
|
||||
color: "Green Tint",
|
||||
description:
|
||||
"solar, soundproofing, lane keep assist, lane departure warning system, w/adaptive cruise control",
|
||||
id: "db22fd44-10dd-456f-979b-ff88cf68cca6",
|
||||
partNumber: "FW04896GTYN",
|
||||
partType: "WINDSHIELD",
|
||||
recalibrationType: "STATIC",
|
||||
requiresCapabilityQuestions: false,
|
||||
requiresRecalibration: true,
|
||||
salesTax: 63.86,
|
||||
sellingPrice: 791.46,
|
||||
},
|
||||
frontWipers: {
|
||||
name: "front wipers",
|
||||
partNumber: "SBB16",
|
||||
description: "SAFELITE BEAM BLADE 16",
|
||||
partType: "FRONT WIPER",
|
||||
price: 32.64,
|
||||
},
|
||||
rearWipers: {
|
||||
name: "rear wipers",
|
||||
partNumber: "SBBR12A",
|
||||
description: "SAFELITE REAR BLADE 12A",
|
||||
partType: "REAR WIPER",
|
||||
price: 24.48,
|
||||
},
|
||||
rainDefense: {
|
||||
name: "rain defense",
|
||||
partNumber: "RAIN DEFENSE",
|
||||
description: null,
|
||||
partType: "RAIN DEFENSE",
|
||||
price: 35.5,
|
||||
},
|
||||
};
|
||||
|
||||
describe("analyticsMixin.js", () => {
|
||||
beforeEach(() => {
|
||||
removeAllTestCookies();
|
||||
|
|
@ -284,6 +324,130 @@ describe("analyticsMixin.js", () => {
|
|||
]);
|
||||
});
|
||||
|
||||
describe("pushSubmittedOrderToDataLayer", () => {
|
||||
beforeEach(() => {
|
||||
store.getters.hasSubmittedOrder = true;
|
||||
store.getters.submittedOrder = {
|
||||
vehicle: {
|
||||
year: "2020",
|
||||
make: "acura",
|
||||
model: "mdx",
|
||||
style: "4-door sedan",
|
||||
carId: "dummyCarId",
|
||||
category: "dummyCategory",
|
||||
vin: "dummyVin",
|
||||
},
|
||||
serviceLocation: {
|
||||
address: "add1",
|
||||
address2: "add2",
|
||||
city: "city",
|
||||
state: "state",
|
||||
zipCode: "zip",
|
||||
zipCodeCtu: "zipCtu",
|
||||
appointmentType: "IN_SHOP",
|
||||
isVehicleProtected: true,
|
||||
provider: {
|
||||
providerNumber: 2,
|
||||
address: {
|
||||
streetAddress: "add3",
|
||||
city: "city2",
|
||||
state: "state2",
|
||||
zipCode: "zip2",
|
||||
zipCodeCtu: "zipCtu2",
|
||||
},
|
||||
},
|
||||
techNotes: "",
|
||||
},
|
||||
customer: {
|
||||
firstName: "first",
|
||||
lastName: "last",
|
||||
emailAddress: "builddigitaltest@safelite.com",
|
||||
phoneNumber: "555-555-5555",
|
||||
isSmsOptIn: false,
|
||||
},
|
||||
damage: {
|
||||
isRepair: false,
|
||||
numberOfChips: null,
|
||||
glassToReplace: [{ glassName: "single", location: "windshield" }],
|
||||
},
|
||||
lineItems: {
|
||||
glassParts: [parts.windshield],
|
||||
supportingItems: [],
|
||||
vaps: [parts.frontWipers],
|
||||
promos: [{ promoCode: "promoTEST" }, { promoCode: "promoTEST2" }],
|
||||
},
|
||||
payment: {
|
||||
isInsurance: false,
|
||||
insuranceCoverage: {
|
||||
isVerified: null,
|
||||
coverageStatus: null,
|
||||
coverageVerificationType: null,
|
||||
},
|
||||
isPia: true,
|
||||
piaType: "Afterpay",
|
||||
inactivePromos: [],
|
||||
},
|
||||
schedule: {
|
||||
date: "date",
|
||||
startTime: "start",
|
||||
endTime: "end",
|
||||
jobMinMinutes: "30",
|
||||
jobMaxMinutes: "45",
|
||||
},
|
||||
workOrderNumber: "01820-111111",
|
||||
workOrderId: "222222222222",
|
||||
};
|
||||
});
|
||||
|
||||
test("Pushes to data layer if nominal", () => {
|
||||
// Arrange
|
||||
const mockDataLayerFn = jest.fn();
|
||||
|
||||
window.dataLayer = {
|
||||
push: mockDataLayerFn,
|
||||
};
|
||||
|
||||
// Act
|
||||
analyticsMixin.methods.pushSubmittedOrderToDataLayer();
|
||||
|
||||
// Assert
|
||||
expect(mockDataLayerFn).toHaveBeenCalled();
|
||||
});
|
||||
|
||||
test("Does not push to data layer if no submitted order available.", () => {
|
||||
// Arrange
|
||||
store.getters.hasSubmittedOrder = false;
|
||||
store.getters.submittedOrder = undefined;
|
||||
|
||||
const mockDataLayerFn = jest.fn();
|
||||
|
||||
window.dataLayer = {
|
||||
push: mockDataLayerFn,
|
||||
};
|
||||
|
||||
// Act
|
||||
analyticsMixin.methods.pushSubmittedOrderToDataLayer();
|
||||
|
||||
// Assert
|
||||
expect(mockDataLayerFn).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
test("Glass and Promo strings correctly formatted", () => {
|
||||
// Arrange
|
||||
window.dataLayer = [];
|
||||
|
||||
// Act
|
||||
analyticsMixin.methods.pushSubmittedOrderToDataLayer();
|
||||
|
||||
// Assert
|
||||
const glassString = window.dataLayer[0].glassToReplace;
|
||||
const promoString = window.dataLayer[0].promoCodes;
|
||||
|
||||
expect(glassString).toMatch(/(\w+\/\w+)?(,\w+\/\w+)*/);
|
||||
expect(promoString).toMatch(/(\w+)?(,\w+)*/);
|
||||
});
|
||||
});
|
||||
|
||||
test("Obj is not null after action prepended", () => {
|
||||
//Arrange
|
||||
const obj = { baseMethodName: "testMethodName", data: "testData" };
|
||||
|
|
|
|||
Loading…
Reference in a new issue