@@ -109,7 +109,6 @@ describe('Test modal', function () {
109
109
} ) . to . throw ( Error ) ;
110
110
} ) ;
111
111
112
-
113
112
it ( 'Should have hide() not hide if not visible' , function ( ) {
114
113
const spy = sinon . spy ( ) ;
115
114
events . on ( element , 'modal-beinghidden' , spy ) ;
@@ -179,25 +178,67 @@ describe('Test modal', function () {
179
178
180
179
it ( 'Should handle the ESC key to close the modal' , function ( ) {
181
180
element . classList . add ( 'is-visible' ) ;
182
- const spy = sinon . spy ( ) ;
183
- events . on ( element , 'modal-beinghidden' , spy ) ;
181
+ const spyBeforeHidden = sinon . spy ( ) ;
182
+ const spyAfterHidden = sinon . spy ( ) ;
183
+ events . on ( element , 'modal-beinghidden' , spyBeforeHidden ) ;
184
+ events . on ( element , 'modal-hidden' , spyAfterHidden ) ;
184
185
element . ownerDocument . body . dispatchEvent ( Object . assign ( new CustomEvent ( 'keydown' , { bubbles : true } ) , { which : 27 } ) ) ;
186
+ modal . element . dispatchEvent ( new CustomEvent ( 'transitionend' , { bubbles : true } ) ) ;
185
187
expect ( element . classList . contains ( 'is-visible' ) ) . to . be . false ;
186
- expect ( spy ) . to . be . called ;
188
+ expect ( spyBeforeHidden ) . to . be . called ;
189
+ expect ( spyAfterHidden ) . to . be . called ;
190
+ const eventDataBeforeHidden = spyBeforeHidden . firstCall . args [ 0 ] . detail ;
191
+ const eventDataAfterHidden = spyAfterHidden . firstCall . args [ 0 ] . detail ;
192
+ expect ( eventDataBeforeHidden . launchingElement , 'Launching element for modal-beinghidden' )
193
+ . to . equal ( element . ownerDocument . body ) ;
194
+ expect ( eventDataBeforeHidden . launchingEvent . target , 'Launching event for modal-beinghidden' )
195
+ . to . equal ( element . ownerDocument . body ) ;
196
+ expect ( eventDataAfterHidden . launchingElement , 'Launching element for modal-hidden' )
197
+ . to . equal ( element . ownerDocument . body ) ;
198
+ expect ( eventDataAfterHidden . launchingEvent . target , 'Launching event for modal-hidden' )
199
+ . to . equal ( element . ownerDocument . body ) ;
187
200
} ) ;
188
201
189
202
it ( 'Should handle any elements with data-modal-close attribute to close the modal' , function ( ) {
190
203
modal . show ( ) ;
204
+ modal . element . dispatchEvent ( new CustomEvent ( 'transitionend' , { bubbles : true } ) ) ;
205
+ const spyBeforeHidden = sinon . spy ( ) ;
206
+ const spyAfterHidden = sinon . spy ( ) ;
207
+ events . on ( modal . element , 'modal-beinghidden' , spyBeforeHidden ) ;
208
+ events . on ( modal . element , 'modal-hidden' , spyAfterHidden ) ;
191
209
const closeButton = element . querySelector ( '[data-modal-close]' ) ;
192
210
closeButton . dispatchEvent ( new CustomEvent ( 'click' , { bubbles : true } ) ) ;
193
- expect ( element . classList . contains ( 'is-visible' ) ) . to . be . false ;
211
+ modal . element . dispatchEvent ( new CustomEvent ( 'transitionend' , { bubbles : true } ) ) ;
212
+ expect ( element . classList . contains ( 'is-visible' ) , 'Visible state' ) . to . be . false ;
213
+ expect ( spyBeforeHidden ) . to . have . been . called ;
214
+ expect ( spyAfterHidden ) . to . have . been . called ;
215
+ const eventDataBeforeHidden = spyBeforeHidden . firstCall . args [ 0 ] . detail ;
216
+ const eventDataAfterHidden = spyAfterHidden . firstCall . args [ 0 ] . detail ;
217
+ expect ( eventDataBeforeHidden . launchingElement , 'Launching element for modal-beinghidden' ) . to . equal ( closeButton ) ;
218
+ expect ( eventDataBeforeHidden . launchingEvent . target , 'Launching event for modal-beinghidden' ) . to . equal ( closeButton ) ;
219
+ expect ( eventDataAfterHidden . launchingElement , 'Launching element for modal-hidden' ) . to . equal ( closeButton ) ;
220
+ expect ( eventDataAfterHidden . launchingEvent . target , 'Launching event for modal-hidden' ) . to . equal ( closeButton ) ;
194
221
} ) ;
195
222
196
223
it ( 'Should handle any click outside the modal element to close the modal' , function ( ) {
197
224
modal . show ( ) ;
225
+ modal . element . dispatchEvent ( new CustomEvent ( 'transitionend' , { bubbles : true } ) ) ;
226
+ const spyBeforeHidden = sinon . spy ( ) ;
227
+ const spyAfterHidden = sinon . spy ( ) ;
228
+ events . on ( modal . element , 'modal-beinghidden' , spyBeforeHidden ) ;
229
+ events . on ( modal . element , 'modal-hidden' , spyAfterHidden ) ;
198
230
const containerArea = document . querySelector ( '.bx--modal' ) ;
199
231
containerArea . dispatchEvent ( new CustomEvent ( 'click' , { bubbles : true } ) ) ;
232
+ modal . element . dispatchEvent ( new CustomEvent ( 'transitionend' , { bubbles : true } ) ) ;
200
233
expect ( element . classList . contains ( 'is-visible' ) ) . to . be . false ;
234
+ expect ( spyBeforeHidden ) . to . have . been . called ;
235
+ expect ( spyAfterHidden ) . to . have . been . called ;
236
+ const eventDataBeforeHidden = spyBeforeHidden . firstCall . args [ 0 ] . detail ;
237
+ const eventDataAfterHidden = spyAfterHidden . firstCall . args [ 0 ] . detail ;
238
+ expect ( eventDataBeforeHidden . launchingElement , 'Launching element for modal-beinghidden' ) . to . equal ( element ) ;
239
+ expect ( eventDataBeforeHidden . launchingEvent . target , 'Launching event for modal-beinghidden' ) . to . equal ( element ) ;
240
+ expect ( eventDataAfterHidden . launchingElement , 'Launching element for modal-hidden' ) . to . equal ( element ) ;
241
+ expect ( eventDataAfterHidden . launchingEvent . target , 'Launching event for modal-hidden' ) . to . equal ( element ) ;
201
242
} ) ;
202
243
203
244
afterEach ( function ( ) {
0 commit comments