jenesius-vue-modal
Version:
The progressive and simple modal system for Vue.js v3
127 lines (100 loc) • 3.52 kB
text/typescript
import {mount} from "@vue/test-utils";
import {container, openModal, pushModal} from "../src/index";
import ModalTitle from "./components/modal-title.vue"
import {computed, reactive, ref} from "vue";
import wait from "./wait";
import NamespaceStore from "./../src/utils/NamespaceStore";
let wrapper = null;
beforeAll(async () => {
wrapper = await mount(container);
})
beforeEach(async () => {
NamespaceStore.instance.forceClean()
await wait()
})
describe('Props of Modal', () => {
/**
* Проверка на передачу простых аргументов в модальное окно
* */
test('Simple props', async () => {
const title = "Text"
const modal = await openModal(ModalTitle, {title});
expect(modal.instance.title).toBe(title)
})
/**
* Проверка на передачу простых аргументов в модальное окно
* */
test('Simple props with push', async () => {
const title = "Text"
const modal = await pushModal(ModalTitle, {title});
expect(modal.instance.title).toBe(title)
})
/**
* Проверка на объект целиком
* */
test('Ref props', async () => {
const state = { title: 'Hello'};
const modal = await openModal(ModalTitle, state);
expect(modal.instance.title).toBe('Hello')
})
/**
* Проверка на передачу ref
* */
test('Ref props', async () => {
const state = ref({ title: 'Hello'});
const modal = await openModal(ModalTitle, state);
expect(modal.instance.title).toBe('Hello')
})
/**
* Проверка на передачу reactive
* */
test('Reactive props', async () => {
const state = reactive({title: 'base'});
const modal = await openModal(ModalTitle, state);
expect(modal.instance.title).toBe('base');
})
/**
* Проверка на передачу вычисляемого объекта, в качестве props целиком
* */
test('Computed props', async () => {
const refState = ref({title: 'ref'});
const state = computed(() => refState.value);
const modal = await openModal(ModalTitle, state);
expect(modal.instance.title).toBe('ref');
})
/**
* Передача props, одно из свойств которого является вычисляемое значение
* */
test('Computed prop in object', async () => {
const modal = await openModal(ModalTitle, {
title: "Hello",
age: 1
})
expect(modal.instance.title).toBe('Hello')
})
/**
* ПРОВЕРКА НА ИЗМЕНЕНИЕ PROPS: REF, REACTIVE, COMPUTED
* */
test('Changing ref in props', async () => {
const state = ref({ title: 'Hello', age: 1});
const modal = await openModal(ModalTitle, state);
state.value.title = 'New value';
await wait();
expect(modal.instance.title).toBe('New value')
})
test('Changing reactive in props', async () => {
const state = reactive({title: 'base', age: 4});
const modal = await openModal(ModalTitle, state);
state.title = 'New value';
await wait();
expect(modal.instance.title).toBe('New value');
})
test('Changing computed in props', async () => {
const refState = ref({title: 'ref'});
const state = computed(() => refState.value);
const modal = await openModal(ModalTitle, state);
refState.value.title = 'New value';
await wait();
expect(modal.instance.title).toBe('New value');
})
})