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 }; +}