UNPKG

jenesius-vue-modal

Version:

The progressive and simple modal system for Vue.js v3

107 lines (83 loc) 2.01 kB
import {mount} from "@vue/test-utils"; import {closeModal, container, getQueueByNamespace, onBeforeModalClose, openModal} from "../src/index"; import wait from "./wait"; import NamespaceStore from "./../src/utils/NamespaceStore"; let wrap; const modalQueue = getQueueByNamespace(); beforeAll(async () => { wrap = await mount(container); }) beforeEach(async () => { NamespaceStore.instance.forceClean() }) describe("onBeforeModalClose", () => { test("onBeforeModalClose run", async () => { let isClosed = false; const component = { setup() { onBeforeModalClose(() => { isClosed = true; }) } } const modal = await openModal(component); await modal.close(); expect(isClosed).toBeTruthy(); }) test("onBeforeModalClose next(false)", async () => { const component = { template: "<p>Test</p>", setup() { onBeforeModalClose(() => { return false; }) } } await openModal(component); await closeModal() .catch(() => { }) expect(modalQueue.length).toBe(1); }) test("onBeforeModalClose next(true)", async () => { const component = { setup() { onBeforeModalClose(() => { return true; }) } } await openModal(component); await closeModal(); expect(modalQueue.length).toBe(0); }) test("onBeforeModalClose async next(false)", async () => { const component = { setup() { onBeforeModalClose(async () => { await wait(100); return false; }) } } await openModal(component); try { expect(await closeModal()).toThrow() } catch (e) { } expect(modalQueue.length).toBe(1); }) test("onBeforeModalClose async next(true)", async () => { const component = { setup() { onBeforeModalClose(async () => { await wait(100); return true; }) } } await openModal(component); await closeModal(); expect(modalQueue.length).toBe(0); }) })