diff --git a/src/layouts/address-vehicles/address-vehicles-question/address-vehicles-question.spec.js b/src/layouts/address-vehicles/address-vehicles-question/address-vehicles-question.spec.js index 7dd36b04..b9cd7e02 100644 --- a/src/layouts/address-vehicles/address-vehicles-question/address-vehicles-question.spec.js +++ b/src/layouts/address-vehicles/address-vehicles-question/address-vehicles-question.spec.js @@ -58,7 +58,6 @@ const mockMixin = { function setupMocks({ modelValueProp = "TESTCAR", cmsQuestionText = "CMS text goes here", - dataFromStoreApi = [], }) { const mountOptions = getMountOptions(); diff --git a/src/layouts/address-vehicles/address-vehicles.spec.js b/src/layouts/address-vehicles/address-vehicles.spec.js new file mode 100644 index 00000000..9df9a478 --- /dev/null +++ b/src/layouts/address-vehicles/address-vehicles.spec.js @@ -0,0 +1,171 @@ +import addressVehicles from "@/layouts/address-vehicles/address-vehicles"; +import { settleAllPromises } from "@/helpers/layout-helper.js"; +import { shallowMount } from "@vue/test-utils"; +import { getMountOptions } from "@/helpers/unit-test-helper.js"; +import { useMainStore } from "@/store"; + +jest.mock("@/helpers/damage-helper", () => ({ + isGlassAvailableForCarId: jest.fn().mockImplementation(() => true), + getDamageString: jest.fn(), + })); + + // Mock our module for promises. + jest.mock("@/helpers/layout-helper.js", () => ({ + settleAllPromises: jest.fn(), + })); + + // Mock fetchCmsContentForPage + jest.mock("@/helpers/cms-content-helper", () => ({ + fetchCmsContentForPage: jest.fn(), + })); + +describe("addressVehicles.vue", () => { + test("Should navigate to CLICKED_BACK if backButtonAction is run", async () => { + // Arrange + const { wrapper } = setupMocks({}); + wrapper.vm.$router.navigate = jest.fn(); + + // Act + await wrapper.setData({ + selectedVehicleVin: "5NMS3CADXLH233004", + }); + wrapper.vm.backButtonAction(); + + //Assert + expect(wrapper.vm.$router.navigate).toBeCalled(); + + wrapper.unmount(); + }); + + + + + + // test("Should return true for valid page requisites if carId / zipCode / emailAddress / pageData exists", async () => { + // // Arrange + // const { wrapper } = setupMocks({}); + // useMainStore().order.vehicle.carId = "CR00000395"; + // useMainStore().order.serviceLocation.zipCode = "43210"; + // useMainStore().order.customer.emailAddress = "testemail@email.com"; + + // // Act + // addressVehicles.beforeRouteEnter.call( + // wrapper.vm, + // { query: { issPage: "address-vehicles" } }, + // undefined, + // (c) => c(wrapper.vm) + // ); + + // let arePagePrerequisitesValid = wrapper.vm.arePagePrerequisitesValid(); + + // // Assert + // expect(arePagePrerequisitesValid).toBe(true); + // }); + + // test("Should return false for valid page requisites if carId is missing", async () => { + // // Arrange + // const { wrapper } = setupMocks({}); + + // // Act + // store.commit(storeMutations.UPDATE_CAR_ID, null); + // const result = wrapper.vm.arePagePrerequisitesValid(); + + // //Assert + // expect(result).toBe(false); + + // wrapper.unmount(); + // }); +}); + +function setupMocks({ + // isZipValid = true, + // isZipServiceable = true, + // lookupVinByPlateResponse, + // partsOrQuestions = [], + vehicle = {}, + vin = null, + // carId = "C0000", + vinLookupResponseError = null, + route = null, + carId = "C0000", + zipCode = "12345", + emailAddress = "test@test.com" + }) { + // useMainStore().validateZip = jest.fn().mockImplementation(() => { + // return Promise.resolve({ + // data: { + // isValid: isZipValid, + // isServiceable: isZipServiceable, + // }, + // }) + // }); + + // useMainStore().lookupVinByPlate = jest.fn().mockImplementation(() => { + // return Promise.resolve({ + // data: lookupVinByPlateResponse + // ? lookupVinByPlateResponse : { + // vin: "TEST_VIN", + // vehicle: { + // carId: "CARID" + // }, + // }, + // }) + // }); + + // useMainStore().getPartsOrQuestions = jest.fn().mockImplementation(() => { + // return Promise.resolve({ + // data: { + // partsOrQuestions: partsOrQuestions, + // }, + // }) + // }); + + const wrapper = shallowMount( + addressVehicles, + getMountOptions({ + route: route ? route : undefined, + router: { + navigate: jest.fn(), + }, + mainStore: { + order: { + vehicle: { + carId: carId, + }, + serviceLocation: { + zipCode: zipCode, + }, + customer: { + emailAddress: emailAddress, + } + }, + applicationUser: { + pageData: "address-vehicles", + }, + + }, + + }) + ); + + const apiResponses = { + // serviceZipValidationResponse: { + // isValid: isZipValid, + // isServiceable: isZipServiceable, + // }, + vinLookupResponse: { + vin: vin, + vehicle: vehicle, + error: vinLookupResponseError, + }, + }; + + settleAllPromises.mockImplementation(() => apiResponses); + + wrapper.vm.getCmsContent = jest.fn().mockImplementation(() => ""); + wrapper.vm.setCmsContent = jest.fn(); + wrapper.vm.$refs.siteFooter.updateButtonText = jest.fn(); + wrapper.vm.$refs.siteFooter.removeLoader = jest.fn(); + + return { wrapper }; + } \ No newline at end of file