UNPKG

@ishitatsuyuki/oruga-next

Version:

UI components for Vue.js and CSS framework agnostic

85 lines (68 loc) 2.69 kB
import { shallowMount } from '@vue/test-utils' import OModal from '@components/modal/Modal' let wrapper describe('OModal', () => { beforeEach(() => { wrapper = shallowMount(OModal, { propsData: { active: true }, stubs: { transition: false } }) }) it('is called', () => { expect(wrapper.exists()).toBeTruthy() }) it('render correctly', () => { expect(wrapper.html()).toMatchSnapshot() }) it('manage props validator', () => { const ariaRole = wrapper.vm.$options.props.ariaRole expect(ariaRole.type).toBe(String) expect(ariaRole.validator && ariaRole.validator('d')).toBeFalsy() expect(ariaRole.validator && ariaRole.validator('dialog')).toBeTruthy() expect(ariaRole.validator && ariaRole.validator('alertdialog')).toBeTruthy() }) it('sets isActive when active prop is changed', async () => { wrapper.setProps({active: false}) await wrapper.vm.$nextTick() expect(wrapper.vm.isActive).toBeFalsy() }) it('manage cancel options', () => { wrapper.setProps({canCancel: true}) expect(wrapper.vm.cancelOptions).toEqual(['escape', 'x', 'outside', 'button']) wrapper.setProps({canCancel: false}) expect(wrapper.vm.cancelOptions).toEqual([]) const options = ['escape'] wrapper.setProps({canCancel: options}) expect(wrapper.vm.cancelOptions).toEqual(options) wrapper.vm.close = jest.fn(() => wrapper.vm.close) wrapper.vm.cancel() wrapper.vm.cancel('escape') expect(wrapper.vm.close).toHaveBeenCalledTimes(1) }) it('close on escape', () => { wrapper.setProps({canCancel: true}) wrapper.setProps({active: true}) wrapper.vm.cancel = jest.fn(() => wrapper.vm.cancel) const event = new KeyboardEvent('keyup', {'key': 'Escape'}) wrapper.vm.keyPress({}) wrapper.vm.keyPress(event) expect(wrapper.vm.cancel).toHaveBeenCalledTimes(1) }) it('emit events on close', () => { jest.useFakeTimers() wrapper.vm.$destroy = jest.fn(() => wrapper.vm.$destroy) wrapper.vm.close() expect(wrapper.emitted()['close']).toBeTruthy() expect(wrapper.emitted()['update:active']).toBeTruthy() wrapper.setProps({programmatic: true}) wrapper.vm.close() expect(wrapper.vm.isActive).toBeFalsy() expect(setTimeout).toHaveBeenLastCalledWith(expect.any(Function), 150) jest.advanceTimersByTime(150) expect(wrapper.vm.$destroy).toHaveBeenCalled() }) })