diff --git a/jest.config.js b/jest.config.js
index e75fc82ab..b594d4aef 100644
--- a/jest.config.js
+++ b/jest.config.js
@@ -11,11 +11,9 @@ module.exports = {
"!src/constants/*.js",
"!src/router/**/*.js",
"!src/helpers/unit-test-helper.js",
- "!src/helpers/damage-helper.js",
"!src/layouts/component-test/component-test.vue",
"!src/layouts/form-test/form-test.vue",
"!src/layouts/vin-lookup/vin-lookup.vue",
- "!src/layouts/license-plate-lookup/license-plate-lookup.vue",
"!src/layouts/vehicle-damage/windshield-damage-type-question/windshield-damage-type-question.vue",
"!src/layouts/vehicle-damage/windshield-options/windshield-options.vue",
"!src/layouts/part-questions/**/*.vue",
@@ -28,7 +26,6 @@ module.exports = {
"!src/common-components/dropdown-question/dropdown-question.vue",
"!src/common-components/textbox-question/textbox-question.vue",
"!src/helpers/validation-rules.js",
- "!src/helpers/damage-helper.js",
// END
], //! means exclude from coverage.
testMatch: ["**/*.spec.(js|jsx|ts|tsx)|**/__tests__/*.(js|jsx|ts|tsx)"],
diff --git a/src/assets/img/loader.gif b/src/assets/img/loader.gif
new file mode 100644
index 000000000..c069b049d
Binary files /dev/null and b/src/assets/img/loader.gif differ
diff --git a/src/assets/img/windshield.png b/src/assets/img/windshield.png
new file mode 100644
index 000000000..4f0c5e5de
Binary files /dev/null and b/src/assets/img/windshield.png differ
diff --git a/src/common-components/loading-modal/loading-modal.spec.js b/src/common-components/loading-modal/loading-modal.spec.js
new file mode 100644
index 000000000..ca7717cca
--- /dev/null
+++ b/src/common-components/loading-modal/loading-modal.spec.js
@@ -0,0 +1,97 @@
+import { shallowMount } from "@vue/test-utils";
+import loadingModal from "./loading-modal";
+import { getMountOptions } from "@/helpers/unit-test-helper.js";
+import store from "@/store";
+
+jest.mock(
+ "@/store",
+ () => {
+ return {};
+ },
+ { virtual: true }
+);
+
+jest.mock('@/assets/img/loader.gif', () => 'loader.gif')
+jest.mock('@/assets/img/windshield.png', () => 'windshield.png')
+
+describe("loadingModal", () => {
+ test("showModal sets modal visible", async () => {
+ // Arrange
+ const { wrapper } = setupMocks({ clickOutCloses: false });
+ wrapper.vm.isModalVisible = false;
+
+ //Act
+ wrapper.vm.showModal();
+
+ // Assert
+ expect(wrapper.vm.isModalVisible).toEqual(true);
+ wrapper.unmount();
+ });
+});
+
+
+describe("loadingModal", () => {
+ test("closeModal sets modal not visible", async () => {
+ // Arrange
+ const { wrapper } = setupMocks({ clickOutCloses: false });
+ wrapper.vm.isModalVisible = true;
+
+ //Act
+ wrapper.vm.closeModal();
+
+ // Assert
+ expect(wrapper.vm.isModalVisible).toEqual(false);
+ wrapper.unmount();
+ });
+});
+
+describe("loadingModal", () => {
+ test("canClose calls closeModal", async () => {
+ // Arrange
+ const { wrapper } = setupMocks({ clickOutCloses: true });
+ wrapper.vm.isModalVisible = true;
+
+ //Act
+ wrapper.vm.canClose();
+
+ // Assert
+ expect(wrapper.vm.isModalVisible).toEqual(false);
+ wrapper.unmount();
+ });
+});
+
+describe("loadingModal", () => {
+ test("canClose does not call closeModal", async () => {
+ // Arrange
+ const { wrapper } = setupMocks({ clickOutCloses: false });
+ wrapper.vm.isModalVisible = true;
+
+ //Act
+ wrapper.vm.canClose();
+
+ // Assert
+ expect(wrapper.vm.isModalVisible).toEqual(true);
+ wrapper.unmount();
+ });
+});
+
+function setupMocks({
+ clickOutCloses
+}) {
+
+ //Mock store
+ store.dispatch = jest.fn(() => {});
+ store.getters = { };
+ const mountOptions = getMountOptions({
+ store: {
+ dispatch: store.dispatch,
+ getters: store.getters,
+ },
+ });
+
+ //Mock props
+ mountOptions.propsData = { clickOutCloses: clickOutCloses };
+ const wrapper = shallowMount(loadingModal, mountOptions);
+
+ return { wrapper };
+}
diff --git a/src/common-components/loading-modal/loading-modal.vue b/src/common-components/loading-modal/loading-modal.vue
new file mode 100644
index 000000000..4f1365802
--- /dev/null
+++ b/src/common-components/loading-modal/loading-modal.vue
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+

+

+
+
+
+ Default text
+
+
+
+
+ Default subtext
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/helpers/damage-helper.js b/src/helpers/damage-helper.js
index e56761dc5..a9b14b98d 100644
--- a/src/helpers/damage-helper.js
+++ b/src/helpers/damage-helper.js
@@ -3,9 +3,33 @@ import baseMixin from "@/mixins/base-mixin.js";
import { storeActions } from "@/constants/store-actions";
export function getDamageString() {
- return store.getters.damage.glassToReplace.length > 1 ? "match" : store.getters.damage.glassToReplace[0].location;
+ const damageLocations = store.getters.damage.glassToReplace;
+ let returnString;
+ if(damageLocations.length > 1){
+ returnString = "match"
+ } else {
+ switch(damageLocations[0]?.location) {
+ case "Windshield":
+ returnString = "windshield"
+ break;
+ case "Driver":
+ case "Passenger":
+ returnString = "side window"
+ break;
+ case "Rear":
+ returnString = "rear window"
+ }
+ }
+ return returnString;
}
+ export function getIsWindshieldOnly () {
+ const damageLocations = store.getters.damage.glassToReplace;
+ const returnString = damageLocations.length === 1 && damageLocations[0]?.location === "Windshield" ? "windshield" : "glass";
+ console.log(damageLocations);
+ return returnString;
+ }
+
export async function isGlassAvailableForCarId(carId){
const newGlassOptions = await baseMixin.methods.dispatchStoreAction(
storeActions.GET_DAMAGE_OPTIONS,
diff --git a/src/helpers/damage-helper.spec.js b/src/helpers/damage-helper.spec.js
index ad5f8f878..2a46978dc 100644
--- a/src/helpers/damage-helper.spec.js
+++ b/src/helpers/damage-helper.spec.js
@@ -1,16 +1,91 @@
import {getDamageString, isGlassAvailableForCarId} from "./damage-helper";
-//import baseMixin from "@/mixins/base-mixin.js";
+import store from "@/store";
-jest.mock("@/store", () => ({
- getters: {damage: {
- glassToReplace: [{location: "Windshield", name: "windshield"}]
- }
- }
- }));
+// Mock basemixin.
+jest.mock("@/mixins/base-mixin.js", () => ({
+ methods: {
+ dispatchStoreAction: jest.fn().mockImplementation(() => { return {
+ data: {
+ windshieldOptions: {availableReplacementOptions: ["windshield"]}
+ }
+ } }),
+ },
+}));
describe("damage-helper.js", () => {
- it("Should return damage getter info", () => {
+ it("Should return match when multiple selected damage options are in the store", () => {
+
+ // Arrange / Act
+ store.getters.damage.glassToReplace = [{location: "Windshield", name: "windshield"}, {location: "Passenger", name: "sideWindow"}];
+
const damage = getDamageString();
- expect(damage).toEqual("Windshield")
+
+ // Assert
+ expect(damage).toEqual("match");
});
- });
\ No newline at end of file
+ });
+
+ describe("damage-helper.js", () => {
+ it("Should return windshield when Windshield is the only selected damage option in the store", () => {
+
+ // Arrange / Act
+ store.getters.damage.glassToReplace = [{location: "Windshield", name: "windshield"}];
+
+ const damage = getDamageString();
+
+ // Assert
+ expect(damage).toEqual("windshield");
+ });
+ });
+
+ describe("damage-helper.js", () => {
+ it("Should return side window when Driver or Passenger is the only selected damage option in the store", () => {
+
+ // Arrange / Act
+ store.getters.damage.glassToReplace = [{location: "Passenger", name: "sideWindow"}];
+
+ const damage = getDamageString();
+
+ // Assert
+ expect(damage).toEqual("side window");
+ });
+ });
+
+ describe("damage-helper.js", () => {
+ it("Should return rear window when Rear is the only selected damage option in the store", () => {
+
+ // Arrange / Act
+ store.getters.damage.glassToReplace = [{location: "Rear", name: "rear"}];
+
+ const damage = getDamageString();
+
+ // Assert
+ expect(damage).toEqual("rear window");
+ });
+ });
+
+ describe("damage-helper.js", () => {
+ it("Should return true if no mismatches between each array exist", async () => {
+ // Arrange
+ store.getters.damage.glassToReplace = [{location: "Windshield", name: "windshield"}];
+
+ // Act
+ const isGlassAvailable = await isGlassAvailableForCarId();
+
+ // Assert
+ expect(isGlassAvailable).toEqual(true);
+ });
+ });
+
+ describe("damage-helper.js", () => {
+ it("Should return false if any mismatches between each array exist", async () => {
+ // Arrange
+ store.getters.damage.glassToReplace = [{location: "Windshield", name: "sideWindow"}];
+
+ const isGlassAvailable = await isGlassAvailableForCarId();
+
+ // Assert
+ expect(isGlassAvailable).toEqual(false);
+ });
+ });
+
diff --git a/src/helpers/heritage-integration/navigation-helper.js b/src/helpers/heritage-integration/navigation-helper.js
index 61c07203d..c7cf34940 100644
--- a/src/helpers/heritage-integration/navigation-helper.js
+++ b/src/helpers/heritage-integration/navigation-helper.js
@@ -140,4 +140,4 @@ function isVinRelatedPage(toRoute) {
fmgPageValue === fmgPageValues.ADDRESS_LOOKUP ||
fmgPageValue === fmgPageValues.ADDRESS_VEHICLES ||
fmgPageValue === fmgPageValues.ESTIMATE;
-}
+}
\ No newline at end of file
diff --git a/src/helpers/heritage-integration/navigation-helper.spec.js b/src/helpers/heritage-integration/navigation-helper.spec.js
index fd06920c2..01bf5dcdc 100644
--- a/src/helpers/heritage-integration/navigation-helper.spec.js
+++ b/src/helpers/heritage-integration/navigation-helper.spec.js
@@ -367,4 +367,4 @@ describe("navigateToHeritageFunnel", () => {
})
);
});
-});
+});
\ No newline at end of file
diff --git a/src/layouts/address-lookup/address-lookup.vue b/src/layouts/address-lookup/address-lookup.vue
index 8e58bb1b1..8f13a3ed7 100644
--- a/src/layouts/address-lookup/address-lookup.vue
+++ b/src/layouts/address-lookup/address-lookup.vue
@@ -6,6 +6,14 @@
v-slot="{ meta }"
autocomplete="off" >
+
+
+ Please wait...
+
+
+ This process can take up 20 seconds.
+
+
@@ -68,6 +76,7 @@ import funnelSubHeader from "@/common-components/funnel-sub-header/funnel-sub-he
import customerQuestions from "@/layouts/address-lookup/customer-questions/customer-questions";
import alert from "@/ux-components/alert/alert";
import textboxQuestion from "@/common-components/textbox-question/textbox-question";
+import loadingModal from '@/common-components/loading-modal/loading-modal.vue';
import { Form } from "vee-validate";
import { defineRule } from "vee-validate";
@@ -251,6 +260,7 @@ export default {
// if the car entered is the same as the car found OR the glass options for the found car match the users damage selections
if (carEntered.carId == carFound.carId || isGlassAvailableForCarId(carFound.carId)) {
+ this.$refs.loadingModal.showModal();
navigateAfterSaveToHeritageFunnel(this.$route);
} else {
// if not then navigate to the "vehicle-damage" page
@@ -260,6 +270,7 @@ export default {
// if multiple cars were found
if (carsFound.find(car => car.carId === carEntered.carId)) {
// and one of them matches the car id entered
+ this.$refs.loadingModal.showModal();
navigateAfterSaveToHeritageFunnel(this.$route);
} else {
// and there is no match, navigate to "address-vehicles" page
@@ -359,6 +370,7 @@ export default {
customerQuestions,
textboxQuestion,
alert,
+ loadingModal,
Form
},
};
diff --git a/src/layouts/license-plate-lookup/license-plate-lookup.spec.js b/src/layouts/license-plate-lookup/license-plate-lookup.spec.js
index 6e6de9349..9afd7e39a 100644
--- a/src/layouts/license-plate-lookup/license-plate-lookup.spec.js
+++ b/src/layouts/license-plate-lookup/license-plate-lookup.spec.js
@@ -1,17 +1,18 @@
// Components
-import vehicleDamage from "@/layouts/license-plate-lookup/license-plate-lookup.vue";
+import licensePlateLookup from "@/layouts/license-plate-lookup/license-plate-lookup.vue";
// Supporting Files
import { settleAllPromises } from "@/helpers/layout-helper.js";
+import * as navigateToHeritage from "@/helpers/heritage-integration/navigation-helper";
import baseMixin from "@/mixins/base-mixin";
import { fetchCmsContentForPage } from "@/helpers/cms-content-helper";
import { shallowMount, flushPromises } from "@vue/test-utils";
import { getMountOptions } from "@/helpers/unit-test-helper.js";
import { nextTick } from "vue";
-import { storeActions } from "@/constants/store-actions";
-import { storeMutations } from "@/constants/store-mutations";
import store from "@/store";
-import { validate } from "vee-validate";
+
+jest.mock('@/assets/img/loader.gif', () => 'loader.gif')
+jest.mock('@/assets/img/windshield.png', () => 'windshield.png')
// Mock our module for promises.
jest.mock("@/helpers/layout-helper.js", () => ({
@@ -29,25 +30,15 @@ jest.mock("@/store", () => ({
dispatch: jest.fn(),
getters: {
order: {
- customer: {
- emailAddress: "test@test.com"
- },
- serviceLocation: {
- zipCode: "43443"
- }
+ customer: { emailAddress: "test@test.com"},
+ serviceLocation: {zip: "11111"},
},
vehicle: {
- carId: "C00000000",
- image: "test.jpg",
- payment: {
- insuranceCoverage: {
- isVerified: false
- }
- },
+ carId: "TESTID",
registration: {
- licensePlate: "HWV4445",
- zipCode: "43224"
- }
+ licensePlate: "TESTPLATE",
+ zipCode: "12345",
+ },
},
eventBusItem: jest.fn(),
damage: {
@@ -62,7 +53,7 @@ describe("license-plate-lookup.vue", () => {
const { wrapper } = setupMocks({});
//Act
- vehicleDamage.beforeRouteEnter.call(
+ licensePlateLookup.beforeRouteEnter.call(
wrapper.vm,
{ query: { fmgPage: "license-plate-lookup" } },
undefined,
@@ -84,7 +75,7 @@ describe("license-plate-lookup.vue", () => {
const { wrapper } = setupMocks({});
//Act
- vehicleDamage.beforeRouteEnter.call(
+ licensePlateLookup.beforeRouteEnter.call(
wrapper.vm,
{ query: { fmgPage: "license-plate-lookup" } },
undefined,
@@ -99,6 +90,340 @@ describe("license-plate-lookup.vue", () => {
});
});
+describe("license-plate-lookup.vue", () => {
+ test("getLicensePlateFromStore returns store license plate", async () => {
+
+ // Arrange
+ const { wrapper } = setupMocks({});
+
+ // ACT
+ const licensePlate = wrapper.vm.getLicensePlateFromStore();
+
+ // Assert
+ expect(licensePlate).toEqual("TESTPLATE");
+ });
+});
+
+describe("license-plate-lookup.vue", () => {
+ test("getRegistrationZipFromStore returns store registration zip", async () => {
+
+ // Arrange
+ const { wrapper } = setupMocks({});
+
+ // ACT
+ const registrationZip = wrapper.vm.getRegistrationZipFromStore();
+
+ // Assert
+ expect(registrationZip).toEqual("12345");
+ });
+});
+
+describe("license-plate-lookup.vue", () => {
+ test("getEmailFromStore returns store customer email", async () => {
+
+ // Arrange
+ const { wrapper } = setupMocks({});
+
+ // ACT
+ const customerEmail = wrapper.vm.getEmailFromStore();
+
+ // Assert
+ expect(customerEmail).toEqual("test@test.com");
+ });
+});
+
+describe("license-plate-lookup.vue", () => {
+ test("getServiceZipFromStore returns store service zip", async () => {
+
+ // Arrange
+ const { wrapper } = setupMocks({});
+
+ // ACT
+ const serviceZip = wrapper.vm.getServiceZipFromStore();
+
+ // Assert
+ expect(serviceZip).toEqual("11111");
+ });
+});
+
+describe("license-plate-lookup.vue", () => {
+ test("Navigate forward should be called and isCarId should be set to false when data entered matches store data on forwardButtonAction click", async () => {
+
+ // Arrange
+ const { wrapper } = setupMocks({});
+
+ wrapper.vm.validateZip = jest.fn().mockImplementation(() => {
+ return {data: {isServiceable: true}};
+ });
+ wrapper.vm.getCmsContent = jest.fn().mockImplementation(() => {
+ return '';
+ });
+ const vinLookup = {data: {vehicle: {carId: "TESTID"}}}
+ wrapper.vm.lookupVin = jest.fn().mockImplementation(() => {
+ return {catch: () => vinLookup};
+ });
+ wrapper.vm.navigateForward = jest.fn();
+
+ //Act
+ licensePlateLookup.beforeRouteEnter.call(
+ wrapper.vm,
+ { query: { fmgPage: "license-plate-lookup" } },
+ undefined,
+ (c) => c(wrapper.vm)
+ );
+
+ await wrapper.vm.forwardButtonAction();
+
+ //Assert
+ expect(wrapper.vm.navigateForward).toHaveBeenCalled();
+ expect(wrapper.vm.isCarIdDifferent).toEqual(false);
+ });
+});
+
+describe("license-plate-lookup.vue", () => {
+ test("Function should stop and datam isRegistrationZipServicable should be set to false when service zip entered returns false on forwardButtonAction click", async () => {
+
+ // Arrange
+ const { wrapper } = setupMocks({});
+
+ wrapper.vm.validateZip = jest.fn().mockImplementation(() => {
+ return {data: {isServiceable: false}};
+ });
+ wrapper.vm.getCmsContent = jest.fn().mockImplementation(() => {
+ return '';
+ });
+ wrapper.vm.$refs.funnelFooter.removeLoader = jest.fn();
+ //Act
+ licensePlateLookup.beforeRouteEnter.call(
+ wrapper.vm,
+ { query: { fmgPage: "license-plate-lookup" } },
+ undefined,
+ (c) => c(wrapper.vm)
+ );
+
+ await wrapper.vm.forwardButtonAction();
+
+ //Assert
+ expect(wrapper.vm.isRegistrationZipServicable).toEqual(false);
+ });
+});
+
+describe("license-plate-lookup.vue", () => {
+ test("Function should stop and datam isCarIdDifferent should be set to true when carId entered doesn't match store carId or previously entered carId on forwardButtonAction click", async () => {
+
+ // Arrange
+ const { wrapper } = setupMocks({});
+
+ wrapper.vm.validateZip = jest.fn().mockImplementation(() => {
+ return {data: {isServiceable: true}};
+ });
+ wrapper.vm.getCmsContent = jest.fn().mockImplementation(() => {
+ return '';
+ });
+ const vinLookup = {data: {vehicle: {carId: "TESTID1"}}}
+ wrapper.vm.lookupVin = jest.fn().mockImplementation(() => {
+ return {catch: () => vinLookup};
+ });
+ wrapper.vm.$refs.funnelFooter.removeLoader = jest.fn();
+ wrapper.vm.$refs.funnelFooter.updateButtonText = jest.fn();
+
+ //Act
+ licensePlateLookup.beforeRouteEnter.call(
+ wrapper.vm,
+ { query: { fmgPage: "license-plate-lookup" } },
+ undefined,
+ (c) => c(wrapper.vm)
+ );
+
+ await wrapper.vm.forwardButtonAction();
+
+ //Assert
+ expect(wrapper.vm.isCarIdDifferent).toEqual(true);
+ });
+});
+
+describe("license-plate-lookup.vue", () => {
+ test("Navigate forward should be called and isCarId should be set to true when carId entered matches previously entered carId and rest of data entered matches store data on forwardButtonAction click", async () => {
+
+ // Arrange
+ const { wrapper } = setupMocks({});
+
+ wrapper.vm.validateZip = jest.fn().mockImplementation(() => {
+ return {data: {isServiceable: true}};
+ });
+ wrapper.vm.getCmsContent = jest.fn().mockImplementation(() => {
+ return '';
+ });
+ const vinLookup = {data: {vehicle: {carId: "TESTID1"}}}
+ wrapper.vm.lookupVin = jest.fn().mockImplementation(() => {
+ return {catch: () => vinLookup};
+ });
+ wrapper.vm.previouslyEnteredCarId = "TESTID1";
+ wrapper.vm.navigateForward = jest.fn();
+
+ //Act
+ licensePlateLookup.beforeRouteEnter.call(
+ wrapper.vm,
+ { query: { fmgPage: "license-plate-lookup" } },
+ undefined,
+ (c) => c(wrapper.vm)
+ );
+
+ await wrapper.vm.forwardButtonAction();
+
+ //Assert
+ expect(wrapper.vm.navigateForward).toHaveBeenCalled();
+ expect(wrapper.vm.isCarIdDifferent).toEqual(true);
+ });
+});
+
+describe("license-plate-lookup.vue", () => {
+ test("Button Text should revert to initial value when licensePlate textfield has new text", async () => {
+
+ // Arrange
+ const { wrapper } = setupMocks({});
+
+ //Act
+ wrapper.vm.licensePlate = "NEWPLATE";
+ wrapper.vm.getCmsContent = jest.fn();
+ wrapper.vm.$refs.funnelFooter.updateButtonText = jest.fn();
+ await wrapper.vm.$nextTick();
+
+ //Assert
+ expect(wrapper.vm.$refs.funnelFooter.updateButtonText).toHaveBeenCalled();
+ });
+});
+
+describe("license-plate-lookup.vue", () => {
+ test("Button Text should revert to initial value when registrationZip textfield has new text", async () => {
+
+ // Arrange
+ const { wrapper } = setupMocks({});
+
+ //Act
+ wrapper.vm.registrationZip = "55555";
+ wrapper.vm.getCmsContent = jest.fn();
+ wrapper.vm.$refs.funnelFooter.updateButtonText = jest.fn();
+ await wrapper.vm.$nextTick();
+
+ //Assert
+ expect(wrapper.vm.$refs.funnelFooter.updateButtonText).toHaveBeenCalled();
+ });
+});
+
+describe("license-plate-lookup.vue", () => {
+ test("Button Text should revert to initial value when serviceZip textfield has new text", async () => {
+
+ // Arrange
+ const { wrapper } = setupMocks({});
+
+ //Act
+ wrapper.vm.serviceZip = "55555";
+ wrapper.vm.getCmsContent = jest.fn();
+ wrapper.vm.$refs.funnelFooter.updateButtonText = jest.fn();
+ await wrapper.vm.$nextTick();
+
+ //Assert
+ expect(wrapper.vm.$refs.funnelFooter.updateButtonText).toHaveBeenCalled();
+ });
+});
+
+describe("license-plate-lookup.vue", () => {
+ test("Dispatch reset damage and dependencies should be called if isCarIdDifferent is true and isSelectedGlassAvailableForVehicle is false when updateCustomerInfo is called", async () => {
+
+ // Arrange
+ const { wrapper } = setupMocks({});
+
+ //Act
+ wrapper.vm.isCarIdDifferent = true;
+ wrapper.vm.isSelectedGlassAvailableForVehicle = false;
+ wrapper.vm.getCmsContent = jest.fn().mockImplementation(() => {
+ return '';
+ });
+ store.commit = jest.fn();
+ store.dispatch = jest.fn();
+
+ const vehicleInfo = {year: "2020", make: "honda", model: "civic", style: "2 door", carId: "TestId", category: "testCat", imageUrl: "image.jpg", imageVifNumber: "123", imageColor: "blue"}
+ await wrapper.vm.updateCustomerInfo('vin', vehicleInfo, 'registrationState');
+
+ //Assert
+ expect(store.dispatch).toHaveBeenCalled();
+ });
+});
+
+describe("license-plate-lookup.vue", () => {
+ test("NavigateAfterSave should be called if isCarIdDifferent is true and isSelectedGlassAvailableForVehicle is false when navigateForward is called", async () => {
+
+ // Arrange
+ const { wrapper } = setupMocks({});
+
+ //Act
+ wrapper.vm.isCarIdDifferent = true;
+ wrapper.vm.isSelectedGlassAvailableForVehicle = false;
+ wrapper.vm.$router.navigateAfterSave = jest.fn();
+ wrapper.vm.getCmsContent = jest.fn().mockImplementation(() => {
+ return '';
+ });
+ store.dispatch = jest.fn();
+
+ await wrapper.vm.navigateForward();
+
+ //Assert
+ expect(wrapper.vm.$router.navigateAfterSave).toHaveBeenCalled();
+ });
+});
+
+describe("license-plate-lookup.vue", () => {
+ test("navigateAfterSaveToHeritageFunnel should be called if isCarIdDifferent is false or isSelectedGlassAvailableForVehicle is true when navigateForward is called", async () => {
+
+ // Arrange
+ const { wrapper } = setupMocks({});
+
+ //Act
+ wrapper.vm.isCarIdDifferent = false;
+ wrapper.vm.$refs.loadingModal.showModal = jest.fn();
+ wrapper.vm.getCmsContent = jest.fn().mockImplementation(() => {
+ return '';
+ });
+ navigateToHeritage.navigateAfterSaveToHeritageFunnel = jest.fn();
+ await wrapper.vm.navigateForward();
+
+ //Assert
+ expect(navigateToHeritage.navigateAfterSaveToHeritageFunnel).toHaveBeenCalled();
+ });
+});
+
+describe("license-plate-lookup.vue", () => {
+ test("dispatch non blocking store action called on validate zip", async () => {
+
+ // Arrange
+ const { wrapper } = setupMocks({});
+
+ //Act
+ await wrapper.vm.validateZip("12345");
+
+
+ //Assert
+ expect(baseMixin.methods.dispatchStoreAction).toHaveBeenCalled();
+ });
+});
+
+describe("license-plate-lookup.vue", () => {
+ test("dispatch non blocking store action called on lookup vin", async () => {
+
+ // Arrange
+ const { wrapper } = setupMocks({});
+
+ //Act
+ await wrapper.vm.lookupVin("zzz123fqsfwg");
+
+
+ //Assert
+ expect(baseMixin.methods.dispatchStoreAction).toHaveBeenCalled();
+ });
+});
+
+
function setupMocks({
pageHeaderWidgetHeaderText = {},
@@ -106,12 +431,8 @@ function setupMocks({
router: {
navigate: jest.fn(),
},
- store: {
- getters: {
- vehicle: {},
- payment: { insuranceCoverage: { isVerified: false } },
- },
- },
+ licensePlate: "TESTPLATE",
+ registrationZip: "12345"
},
}) {
//Mock api responses
@@ -139,7 +460,7 @@ function setupMocks({
const mountOptions = getMountOptions(mountOptionsMockData);
mountOptions['attachTo'] = document.body; // append wrapper to document.body to test DOM methods
- const wrapper = shallowMount(vehicleDamage, mountOptions);
+ const wrapper = shallowMount(licensePlateLookup, mountOptions);
wrapper.vm.setCmsContent = baseMixin.methods.setCmsContent;
diff --git a/src/layouts/license-plate-lookup/license-plate-lookup.vue b/src/layouts/license-plate-lookup/license-plate-lookup.vue
index cce368d5c..22eec59a3 100644
--- a/src/layouts/license-plate-lookup/license-plate-lookup.vue
+++ b/src/layouts/license-plate-lookup/license-plate-lookup.vue
@@ -1,95 +1,48 @@
-