1- import { createLocalVue , mount } from '@vue/test-utils'
1+ import { createLocalVue , mount , enableAutoDestroy } from '@vue/test-utils'
22import VueFinalModal from '../../lib'
33
4- function createOpenedModal ( propsData = { } , mountingOptions = { } ) {
4+ enableAutoDestroy ( afterEach )
5+
6+ function createOpenedModal ( propsData = { } , listeners = { } , mountingOptions = { } ) {
57 const localVue = createLocalVue ( )
68 localVue . use ( VueFinalModal ( ) )
79 return new Promise ( resolve => {
10+ const elem = document . createElement ( 'div' )
11+ if ( document . body ) {
12+ document . body . appendChild ( elem )
13+ }
814 const wrapper = mount ( localVue . options . components . VueFinalModal , {
915 stubs : false ,
1016 localVue,
@@ -13,33 +19,185 @@ function createOpenedModal(propsData = {}, mountingOptions = {}) {
1319 ...propsData
1420 } ,
1521 listeners : {
16- opened : ( ) => resolve ( { wrapper, localVue } )
22+ opened : ( ) => resolve ( { wrapper, localVue } ) ,
23+ input : val => {
24+ wrapper . setProps ( { value : val } )
25+ } ,
26+ ...listeners
27+ } ,
28+ attachTo : elem ,
29+ ...mountingOptions
30+ } )
31+ } )
32+ }
33+ function createClosedModal ( propsData = { } , mountingOptions = { } ) {
34+ const localVue = createLocalVue ( )
35+ localVue . use ( VueFinalModal ( ) )
36+ return new Promise ( resolve => {
37+ const wrapper = mount ( localVue . options . components . VueFinalModal , {
38+ stubs : false ,
39+ localVue,
40+ propsData : {
41+ value : false ,
42+ ...propsData
1743 } ,
1844 ...mountingOptions
1945 } )
46+ resolve ( { wrapper, localVue } )
2047 } )
2148}
2249
2350describe ( 'VueFinalModal.vue' , ( ) => {
24- describe ( 'props' , ( ) => {
51+ describe ( 'default props' , ( ) => {
2552 it ( 'value' , async ( ) => {
2653 const { wrapper } = await createOpenedModal ( )
2754 expect ( wrapper . find ( '.vfm' ) . isVisible ( ) ) . toBe ( true )
28- wrapper . destroy ( )
55+ } )
56+ it ( 'ssr: true' , async ( ) => {
57+ const { wrapper } = await createClosedModal ( )
58+ expect ( wrapper . find ( '.vfm' ) . exists ( ) ) . toBe ( true )
2959 } )
3060 it ( 'lockScroll: true' , async ( ) => {
31- const { wrapper } = await createOpenedModal ( {
32- lockScroll : true
33- } )
61+ await createOpenedModal ( )
3462 expect ( document . body . style . overflow ) . toBe ( 'hidden' )
35- wrapper . destroy ( )
3663 } )
64+ it ( 'hideOverlay: false' , async ( ) => {
65+ const { wrapper } = await createOpenedModal ( )
66+ expect ( wrapper . find ( '.vfm__overlay' ) . isVisible ( ) ) . toBe ( true )
67+ } )
68+ it ( 'clickToClose: true' , async done => {
69+ const { wrapper } = await createOpenedModal ( )
70+ wrapper . find ( '.vfm__container' ) . trigger ( 'click' )
71+ setTimeout ( ( ) => {
72+ expect ( wrapper . find ( '.vfm' ) . isVisible ( ) ) . toBe ( false )
73+ done ( )
74+ } , 200 )
75+ } )
76+ it ( 'escToClose: false' , async done => {
77+ const { wrapper } = await createOpenedModal ( )
78+ wrapper . find ( '.vfm__container' ) . trigger ( 'keydown.esc' )
79+ setTimeout ( ( ) => {
80+ expect ( wrapper . find ( '.vfm' ) . isVisible ( ) ) . toBe ( true )
81+ done ( )
82+ } , 200 )
83+ } )
84+ it ( 'preventClick: false' , async ( ) => {
85+ const { wrapper } = await createOpenedModal ( )
86+ expect ( wrapper . find ( '.vfm' ) . classes ( 'vfm--prevent-none' ) ) . toBe ( false )
87+ expect ( wrapper . find ( '.vfm__content' ) . classes ( 'vfm--prevent-auto' ) ) . toBe ( false )
88+ } )
89+ it ( 'focusRetain: true' , async ( ) => {
90+ const { wrapper } = await createOpenedModal ( )
91+ expect ( document . activeElement === wrapper . find ( '.vfm__container' ) . vm . $el ) . toBe ( true )
92+ } )
93+ } )
94+ describe ( 'specific props' , ( ) => {
3795 it ( 'lockScroll: false' , async ( ) => {
38- const { wrapper } = await createOpenedModal ( {
96+ await createOpenedModal ( {
3997 lockScroll : false
4098 } )
4199 expect ( document . body . style . overflow ) . not . toBe ( 'hidden' )
42- wrapper . destroy ( )
100+ } )
101+ it ( 'ssr: false' , async ( ) => {
102+ const { wrapper } = await createClosedModal ( {
103+ ssr : false
104+ } )
105+ expect ( wrapper . find ( '.vfm' ) . exists ( ) ) . toBe ( false )
106+ } )
107+ it ( 'classes' , async ( ) => {
108+ const testClass = 'test-class'
109+ const { wrapper } = await createClosedModal ( {
110+ classes : testClass
111+ } )
112+ expect ( wrapper . find ( '.vfm__container' ) . classes ( ) ) . toContain ( testClass )
113+ } )
114+ it ( 'styles' , async ( ) => {
115+ const testStyle = 'background: rgb(255, 255, 255);'
116+ const { wrapper } = await createClosedModal ( {
117+ styles : testStyle
118+ } )
119+ expect ( wrapper . find ( '.vfm__container' ) . attributes ( 'style' ) ) . toContain ( testStyle )
120+ } )
121+ it ( 'overlayClass' , async ( ) => {
122+ const testClass = 'test-class'
123+ const { wrapper } = await createClosedModal ( {
124+ overlayClass : testClass
125+ } )
126+ expect ( wrapper . find ( '.vfm__overlay' ) . classes ( ) ) . toContain ( testClass )
127+ } )
128+ it ( 'overlayStyle' , async ( ) => {
129+ const testStyle = 'background: rgb(255, 255, 255);'
130+ const { wrapper } = await createClosedModal ( {
131+ overlayStyle : testStyle
132+ } )
133+ expect ( wrapper . find ( '.vfm__overlay' ) . attributes ( 'style' ) ) . toContain ( testStyle )
134+ } )
135+ it ( 'contentClass' , async ( ) => {
136+ const testClass = 'test-class'
137+ const { wrapper } = await createClosedModal ( {
138+ contentClass : testClass
139+ } )
140+ expect ( wrapper . find ( '.vfm__content' ) . classes ( ) ) . toContain ( testClass )
141+ } )
142+ it ( 'contentStyle' , async ( ) => {
143+ const testStyle = 'background: rgb(255, 255, 255);'
144+ const { wrapper } = await createClosedModal ( {
145+ contentStyle : testStyle
146+ } )
147+ expect ( wrapper . find ( '.vfm__content' ) . attributes ( 'style' ) ) . toContain ( testStyle )
148+ } )
149+ it ( 'hideOverlay: true' , async ( ) => {
150+ const { wrapper } = await createOpenedModal ( {
151+ hideOverlay : true
152+ } )
153+ expect ( wrapper . find ( '.vfm__overlay' ) . isVisible ( ) ) . toBe ( false )
154+ } )
155+ it ( 'clickToClose: false' , async done => {
156+ const { wrapper } = await createOpenedModal ( {
157+ clickToClose : false
158+ } )
159+ wrapper . find ( '.vfm__container' ) . trigger ( 'click' )
160+ setTimeout ( ( ) => {
161+ expect ( wrapper . find ( '.vfm' ) . isVisible ( ) ) . toBe ( true )
162+ done ( )
163+ } , 200 )
164+ } )
165+ it ( 'escToClose: false' , async done => {
166+ const { wrapper } = await createOpenedModal ( {
167+ escToClose : true
168+ } )
169+ wrapper . find ( '.vfm__container' ) . trigger ( 'keydown.esc' )
170+ setTimeout ( ( ) => {
171+ expect ( wrapper . find ( '.vfm' ) . isVisible ( ) ) . toBe ( false )
172+ done ( )
173+ } , 200 )
174+ } )
175+ it ( 'preventClick: true' , async ( ) => {
176+ const { wrapper } = await createOpenedModal ( {
177+ preventClick : true
178+ } )
179+ expect ( wrapper . find ( '.vfm' ) . classes ( 'vfm--prevent-none' ) ) . toBe ( true )
180+ expect ( wrapper . find ( '.vfm__content' ) . classes ( 'vfm--prevent-auto' ) ) . toBe ( true )
181+ } )
182+ it ( 'attach: body' , async ( ) => {
183+ const elem = document . createElement ( 'div' )
184+ document . body . appendChild ( elem )
185+ const { wrapper } = await createOpenedModal ( {
186+ attach : elem
187+ } )
188+ expect ( wrapper . vm . $el . parentNode === elem ) . toBe ( true )
189+ } )
190+ it ( 'focusRetain: false' , async ( ) => {
191+ const { wrapper } = await createOpenedModal ( {
192+ focusRetain : false
193+ } )
194+ expect ( document . activeElement === wrapper . find ( '.vfm__container' ) . vm . $el ) . toBe ( false )
195+ } )
196+ it ( 'focusTrap: true' , async ( ) => {
197+ const { wrapper } = await createOpenedModal ( {
198+ focusTrap : true
199+ } )
200+ expect ( document . activeElement === wrapper . find ( '.vfm__container' ) . vm . $el ) . toBe ( true )
43201 } )
44202 } )
45203} )
0 commit comments