DigitalConsumer.FixMyGlass/src/layouts/payment-method/payment-method.spec.js

133 lines
3.5 KiB
JavaScript

// Components
import customerDetails from "@/layouts/payment-method/payment-method.vue";
// Supporting Files
import { shallowMount } from "@vue/test-utils";
import { getMountOptions } from "@/helpers/unit-test-helper.js";
import store from "@/store";
import { experimentSettings } from "@/constants/experiments";
// Mock our module for promises.
jest.mock("@/helpers/layout-helper.js", () => ({
settleAllPromises: jest.fn(),
}));
jest.mock("@/helpers/heritage-integration/order-helper.js", () => ({
submitWorkOrder: jest.fn(),
}));
jest.mock("@/helpers/cart-and-payment-helper.js", () => ({
getAmountDue: jest.fn(),
}));
let piaDisabledFlag = false;
describe("payment-method.vue", () => {
describe("navigation", () => {
test("if the back button is clicked, navigate back", async () => {
// Arrange
const { wrapper } = setupMocks();
// Act
await wrapper.vm.backButtonAction();
// Assert
expect(wrapper.vm.$router.navigateWithoutSaving).toHaveBeenCalled();
});
test("if the continue button is clicked, navigate forward", async () => {
// Arrange
const { wrapper } = setupMocks();
// Act
await wrapper.vm.forwardButtonAction();
// Assert
expect(wrapper.vm.$router.navigateWithoutSaving).toHaveBeenCalled();
});
});
});
function setupMocks() {
store.getters = {
damage: {},
lineItems: {
glassParts: [],
supportingItems: [],
vaps: [],
promos: [],
},
order: {
payment: {
isPia: false,
insuranceCoverage: {
isVerified: true,
},
},
lineItems: {
glassParts: [],
supportingItems: [],
vaps: [],
promos: [],
},
policy: {
currentDeductible: 123,
isNoComp: false,
isItac: false,
},
serviceLocation: {
appointmentType: "Mobile",
address: "123 Test Ave",
city: "Anytown",
state: "OH",
zipCode: "00000",
},
},
policy: {
currentDeductible: 123,
},
payment: {
isInsurance: false,
},
};
const mountOptions = getMountOptions({
route: { query: {}, params: {} },
router: {
navigate: jest.fn(),
navigateWithSaving: jest.fn(),
navigateWithoutSaving: jest.fn(),
},
store: {
getters: store.getters,
},
});
const mockMixin = {
methods: {
getSettingValue: jest.fn((settingName) => {
if (!piaDisabledFlag) {
if (settingName === experimentSettings.PIA_EXPERIENCE) {
return "PIA Optional";
}
if (settingName === experimentSettings.SUBMIT_ORDER_ENABLE_PIA) {
return "true";
}
}
return "false";
}),
getCmsContent: jest.fn().mockImplementation(() => {
return "test text";
}),
},
};
mountOptions.global.mixins = [mockMixin];
const wrapper = shallowMount(customerDetails, mountOptions);
wrapper.vm.$refs.loadingModal.showModal = jest.fn();
return { wrapper };
}