@@ -200,6 +200,69 @@ describe('details-dialog-element', function() {
200
200
assert ( ! details . open )
201
201
} )
202
202
} )
203
+
204
+ describe ( 'when using with inlcude-fragment' , function ( ) {
205
+ let includeFragment
206
+ beforeEach ( function ( ) {
207
+ includeFragment = document . createElement ( 'include-fragment' )
208
+ dialog . innerHTML = ''
209
+ dialog . append ( includeFragment )
210
+ dialog . src = '/404'
211
+ } )
212
+
213
+ afterEach ( function ( ) {
214
+ dialog . innerHTML = ''
215
+ dialog . removeAttribute ( 'src' )
216
+ } )
217
+
218
+ it ( 'transfers src on toggle' , async function ( ) {
219
+ assert ( ! details . open )
220
+ assert . notOk ( includeFragment . getAttribute ( 'src' ) )
221
+ dialog . toggle ( true )
222
+ await waitForToggleEvent ( details )
223
+ assert ( details . open )
224
+ assert . equal ( includeFragment . getAttribute ( 'src' ) , '/404' )
225
+ } )
226
+
227
+ it ( 'transfers src on mouseover when preload is true' , async function ( ) {
228
+ assert ( ! details . open )
229
+ dialog . preload = true
230
+ assert ( dialog . hasAttribute ( 'preload' ) )
231
+ assert . notOk ( includeFragment . getAttribute ( 'src' ) )
232
+ triggerEvent ( details , 'mouseover' )
233
+ assert . equal ( includeFragment . getAttribute ( 'src' ) , '/404' )
234
+ } )
235
+ } )
236
+
237
+ describe ( 'with inlcude-fragment works for script made dialogs' , function ( ) {
238
+ let includeFragment
239
+ beforeEach ( function ( ) {
240
+ dialog . remove ( )
241
+ dialog = document . createElement ( 'details-dialog' )
242
+ dialog . src = '/404'
243
+ dialog . preload = true
244
+ includeFragment = document . createElement ( 'include-fragment' )
245
+ dialog . append ( includeFragment )
246
+ details . append ( dialog )
247
+ includeFragment = document . querySelector ( 'include-fragment' )
248
+ } )
249
+
250
+ it ( 'transfers src on toggle' , async function ( ) {
251
+ assert ( ! details . open )
252
+ assert . notOk ( includeFragment . getAttribute ( 'src' ) )
253
+ dialog . toggle ( true )
254
+ await waitForToggleEvent ( details )
255
+ assert ( details . open )
256
+ assert . equal ( includeFragment . getAttribute ( 'src' ) , '/404' )
257
+ } )
258
+
259
+ it ( 'transfers src on mouseover' , async function ( ) {
260
+ assert ( ! details . open )
261
+ assert . notOk ( includeFragment . getAttribute ( 'src' ) )
262
+ triggerEvent ( details , 'mouseover' )
263
+ assert . equal ( includeFragment . getAttribute ( 'src' ) , '/404' )
264
+ } )
265
+ } )
203
266
} )
204
267
} )
205
268
@@ -215,16 +278,17 @@ function waitForToggleEvent(details) {
215
278
} )
216
279
}
217
280
281
+ function triggerEvent ( element , name , key ) {
282
+ const event = document . createEvent ( 'Event' )
283
+ event . initEvent ( name , true , true )
284
+ if ( key ) event . key = key
285
+ element . dispatchEvent ( event )
286
+ }
287
+
218
288
function pressEscape ( details ) {
219
- const escapeEvent = document . createEvent ( 'Event' )
220
- escapeEvent . initEvent ( 'keydown' , true , true )
221
- escapeEvent . key = 'Escape'
222
- details . dispatchEvent ( escapeEvent )
289
+ triggerEvent ( details , 'keydown' , 'Escape' )
223
290
}
224
291
225
292
function pressTab ( details ) {
226
- const escapeEvent = document . createEvent ( 'Event' )
227
- escapeEvent . initEvent ( 'keydown' , true , true )
228
- escapeEvent . key = 'Tab'
229
- details . dispatchEvent ( escapeEvent )
293
+ triggerEvent ( details , 'keydown' , 'Tab' )
230
294
}
0 commit comments