Add tests
This commit is contained in:
parent
4d953cae64
commit
06c095fcb1
1 changed files with 360 additions and 1 deletions
|
|
@ -1,3 +1,362 @@
|
||||||
|
import { shallowMount } from "@vue/test-utils";
|
||||||
|
import { getMountOptions } from "@/helpers/unit-test-helper.js";
|
||||||
|
import store from "@/store";
|
||||||
|
|
||||||
|
import review from "@/layouts/review/review";
|
||||||
|
|
||||||
|
const testConstants = {};
|
||||||
|
|
||||||
|
jest.mock("@/store", () => ({
|
||||||
|
commit: jest.fn(),
|
||||||
|
dispatch: jest.fn(),
|
||||||
|
}));
|
||||||
|
|
||||||
describe("Review Page", () => {
|
describe("Review Page", () => {
|
||||||
test.todo("Add more tests as specific functionality is added.");
|
beforeEach(() => {
|
||||||
|
store.getters = {
|
||||||
|
order: {
|
||||||
|
vehicle: {
|
||||||
|
year: "2020",
|
||||||
|
make: "Acura",
|
||||||
|
model: "MDX",
|
||||||
|
style: "4 door sedan",
|
||||||
|
},
|
||||||
|
damage: {
|
||||||
|
isRepair: false,
|
||||||
|
numberOfChips: 2,
|
||||||
|
glassToReplace: ["dummy location value"],
|
||||||
|
},
|
||||||
|
lineItems: {
|
||||||
|
glassParts: ["dummy part value"],
|
||||||
|
supportingItems: ["dummy supporting item"],
|
||||||
|
vaps: ["dummy vap"],
|
||||||
|
},
|
||||||
|
serviceLocation: {
|
||||||
|
address: "address 1",
|
||||||
|
address2: "address 2",
|
||||||
|
city: "city",
|
||||||
|
state: "state",
|
||||||
|
zipCode: "zip code",
|
||||||
|
appointmentType: "Mobile",
|
||||||
|
provider: {
|
||||||
|
providerNumber: 1,
|
||||||
|
address: {
|
||||||
|
streetAddress: "provider address 1",
|
||||||
|
city: "provider city",
|
||||||
|
state: "provider state",
|
||||||
|
zipCode: "provider zip code",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
schedule: {
|
||||||
|
date: "date",
|
||||||
|
startTime: "start",
|
||||||
|
endTime: "end",
|
||||||
|
jobMinMinutes: "30",
|
||||||
|
jobMaxMinutes: "45",
|
||||||
|
},
|
||||||
|
customer: {
|
||||||
|
firstName: "first name",
|
||||||
|
lastName: "last name",
|
||||||
|
emailAddress: "builddigitaltest@safelite.com",
|
||||||
|
phoneNumber: "555-555-5555",
|
||||||
|
isSmsOptIn: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
});
|
||||||
|
describe("arePagePrerequisitesValid", () => {
|
||||||
|
test("Returns true for baseline valid state", () => {
|
||||||
|
// Arrange
|
||||||
|
const { wrapper } = setupMocks({});
|
||||||
|
|
||||||
|
// Act
|
||||||
|
const isValid = wrapper.vm.arePagePrerequisitesValid();
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
expect(isValid).toBe(true);
|
||||||
|
});
|
||||||
|
test("Returns false for empty state", () => {
|
||||||
|
// Arrange
|
||||||
|
store.getters.order = {
|
||||||
|
vehicle: {
|
||||||
|
year: null,
|
||||||
|
make: null,
|
||||||
|
model: null,
|
||||||
|
style: null,
|
||||||
|
carId: null,
|
||||||
|
category: null,
|
||||||
|
vin: null,
|
||||||
|
imageUrl: null,
|
||||||
|
imageVifNumber: null,
|
||||||
|
imageColor: null,
|
||||||
|
registration: {
|
||||||
|
licensePlate: 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,
|
||||||
|
partQuestionAnswers: null,
|
||||||
|
moldingQuestionAnswers: null,
|
||||||
|
capabilityQuestionAnswers: null,
|
||||||
|
},
|
||||||
|
lineItems: {
|
||||||
|
glassParts: null,
|
||||||
|
supportingItems: null,
|
||||||
|
vaps: null,
|
||||||
|
serverData: null,
|
||||||
|
},
|
||||||
|
payment: {
|
||||||
|
isInsurance: null,
|
||||||
|
insuranceCoverage: {
|
||||||
|
isVerified: null,
|
||||||
|
coverageStatus: null,
|
||||||
|
},
|
||||||
|
parentAccountNumber: 0,
|
||||||
|
},
|
||||||
|
schedule: {
|
||||||
|
date: null,
|
||||||
|
startTime: null,
|
||||||
|
endTime: null,
|
||||||
|
routeCode: null,
|
||||||
|
jobMaxMinutes: null,
|
||||||
|
jobMinMinutes: null,
|
||||||
|
},
|
||||||
|
referralNumber: null,
|
||||||
|
referralSequenceNumber: null,
|
||||||
|
referralDate: null,
|
||||||
|
referralCorrelationId: null,
|
||||||
|
eon: null,
|
||||||
|
};
|
||||||
|
|
||||||
|
const { wrapper } = setupMocks({});
|
||||||
|
|
||||||
|
// Act
|
||||||
|
const isValid = wrapper.vm.arePagePrerequisitesValid();
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
expect(isValid).toBe(false);
|
||||||
|
});
|
||||||
|
describe("Damage requirements", () => {
|
||||||
|
test("Accepts null glassToReplace when is repair", () => {
|
||||||
|
// Arrange
|
||||||
|
store.getters.order.damage.isRepair = true;
|
||||||
|
store.getters.order.damage.glassToReplace = null;
|
||||||
|
store.getters.order.damage.numberOfChips = 1;
|
||||||
|
|
||||||
|
const { wrapper } = setupMocks({});
|
||||||
|
|
||||||
|
// Act
|
||||||
|
const isValid = wrapper.vm.arePagePrerequisitesValid();
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
expect(isValid).toBe(true);
|
||||||
|
});
|
||||||
|
test("Rejects 0 chips when repair", () => {
|
||||||
|
// Arrange
|
||||||
|
store.getters.order.damage.isRepair = true;
|
||||||
|
store.getters.order.damage.numberOfChips = 0;
|
||||||
|
|
||||||
|
const { wrapper } = setupMocks({});
|
||||||
|
|
||||||
|
// Act
|
||||||
|
const isValid = wrapper.vm.arePagePrerequisitesValid();
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
expect(isValid).toBe(false);
|
||||||
|
});
|
||||||
|
test("Rejects null chips when repair", () => {
|
||||||
|
// Arrange
|
||||||
|
store.getters.order.damage.isRepair = true;
|
||||||
|
store.getters.order.damage.numberOfChips = null;
|
||||||
|
|
||||||
|
const { wrapper } = setupMocks({});
|
||||||
|
|
||||||
|
// Act
|
||||||
|
const isValid = wrapper.vm.arePagePrerequisitesValid();
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
expect(isValid).toBe(false);
|
||||||
|
});
|
||||||
|
test("Accepts null chips when not repair", () => {
|
||||||
|
// Arrange
|
||||||
|
store.getters.order.damage.isRepair = false;
|
||||||
|
store.getters.order.damage.numberOfChips = null;
|
||||||
|
|
||||||
|
const { wrapper } = setupMocks({});
|
||||||
|
|
||||||
|
// Act
|
||||||
|
const isValid = wrapper.vm.arePagePrerequisitesValid();
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
expect(isValid).toBe(true);
|
||||||
|
});
|
||||||
|
test("Rejects empty glassToReplace when not repair", () => {
|
||||||
|
// Arrange
|
||||||
|
store.getters.order.damage.isRepair = false;
|
||||||
|
store.getters.order.damage.glassToReplace = null;
|
||||||
|
|
||||||
|
const { wrapper } = setupMocks({});
|
||||||
|
|
||||||
|
// Act
|
||||||
|
const isValid = wrapper.vm.arePagePrerequisitesValid();
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
expect(isValid).toBe(false);
|
||||||
|
});
|
||||||
|
test("Rejects null glassToReplace when not repair", () => {
|
||||||
|
// Arrange
|
||||||
|
store.getters.order.damage.isRepair = false;
|
||||||
|
store.getters.order.damage.glassToReplace = [];
|
||||||
|
|
||||||
|
const { wrapper } = setupMocks({});
|
||||||
|
|
||||||
|
// Act
|
||||||
|
const isValid = wrapper.vm.arePagePrerequisitesValid();
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
expect(isValid).toBe(false);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
describe("Package requirements", () => {
|
||||||
|
test("Accepts null glassParts when is repair", () => {
|
||||||
|
// Arrange
|
||||||
|
store.getters.order.damage.isRepair = true;
|
||||||
|
store.getters.order.lineItems.glassParts = null;
|
||||||
|
|
||||||
|
const { wrapper } = setupMocks({});
|
||||||
|
|
||||||
|
// Act
|
||||||
|
const isValid = wrapper.vm.arePagePrerequisitesValid();
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
expect(isValid).toBe(true);
|
||||||
|
});
|
||||||
|
test("Rejects null glassParts when not repair", () => {
|
||||||
|
// Arrange
|
||||||
|
store.getters.order.damage.isRepair = false;
|
||||||
|
store.getters.order.lineItems.glassParts = null;
|
||||||
|
|
||||||
|
const { wrapper } = setupMocks({});
|
||||||
|
|
||||||
|
// Act
|
||||||
|
const isValid = wrapper.vm.arePagePrerequisitesValid();
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
expect(isValid).toBe(false);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
describe("Service Location requirements", () => {
|
||||||
|
test("Accepts null provider address when mobile appointment", () => {
|
||||||
|
// Arrange
|
||||||
|
store.getters.order.serviceLocation.appointmentType = "Mobile";
|
||||||
|
store.getters.order.serviceLocation.provider.address = {};
|
||||||
|
|
||||||
|
const { wrapper } = setupMocks({});
|
||||||
|
|
||||||
|
// Act
|
||||||
|
const isValid = wrapper.vm.arePagePrerequisitesValid();
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
expect(isValid).toBe(true);
|
||||||
|
});
|
||||||
|
test("Reject null provider address when non-mobile appointment", () => {
|
||||||
|
// Arrange
|
||||||
|
store.getters.order.serviceLocation.appointmentType = "Inshop";
|
||||||
|
store.getters.order.serviceLocation.provider.address = {};
|
||||||
|
|
||||||
|
const { wrapper } = setupMocks({});
|
||||||
|
|
||||||
|
// Act
|
||||||
|
const isValid = wrapper.vm.arePagePrerequisitesValid();
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
expect(isValid).toBe(false);
|
||||||
|
});
|
||||||
|
test("Accepts null service location address when non-mobile appointment", () => {
|
||||||
|
// Arrange
|
||||||
|
store.getters.order.serviceLocation.appointmentType = "Inshop";
|
||||||
|
store.getters.order.serviceLocation.address = null;
|
||||||
|
store.getters.order.serviceLocation.address2 = null;
|
||||||
|
store.getters.order.serviceLocation.zipCode = null;
|
||||||
|
store.getters.order.serviceLocation.city = null;
|
||||||
|
store.getters.order.serviceLocation.state = null;
|
||||||
|
|
||||||
|
const { wrapper } = setupMocks({});
|
||||||
|
|
||||||
|
// Act
|
||||||
|
const isValid = wrapper.vm.arePagePrerequisitesValid();
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
expect(isValid).toBe(true);
|
||||||
|
});
|
||||||
|
test("Rejects null service location address when mobile appointment", () => {
|
||||||
|
// Arrange
|
||||||
|
store.getters.order.serviceLocation.appointmentType = "Mobile";
|
||||||
|
store.getters.order.serviceLocation.address = null;
|
||||||
|
store.getters.order.serviceLocation.address2 = null;
|
||||||
|
store.getters.order.serviceLocation.zipCode = null;
|
||||||
|
store.getters.order.serviceLocation.city = null;
|
||||||
|
store.getters.order.serviceLocation.state = null;
|
||||||
|
|
||||||
|
const { wrapper } = setupMocks({});
|
||||||
|
|
||||||
|
// Act
|
||||||
|
const isValid = wrapper.vm.arePagePrerequisitesValid();
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
expect(isValid).toBe(false);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
function setupMocks(customMountOptions) {
|
||||||
|
customMountOptions.store = store;
|
||||||
|
|
||||||
|
const mountOptions = getMountOptions(customMountOptions);
|
||||||
|
|
||||||
|
const mockMixin = {
|
||||||
|
methods: {
|
||||||
|
getCmsContent: jest.fn((widgetName, cmsFieldName) => {
|
||||||
|
return `${widgetName} ${cmsFieldName}`;
|
||||||
|
}),
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
mountOptions.global.mixins = [mockMixin];
|
||||||
|
|
||||||
|
const wrapper = shallowMount(review, mountOptions);
|
||||||
|
wrapper.vm.setCmsContent = jest.fn();
|
||||||
|
return { wrapper };
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue