@@ -200,6 +200,69 @@ describe('details-dialog-element', function() {
200200 assert ( ! details . open )
201201 } )
202202 } )
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+ } )
203266 } )
204267} )
205268
@@ -215,16 +278,17 @@ function waitForToggleEvent(details) {
215278 } )
216279}
217280
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+
218288function 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' )
223290}
224291
225292function 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' )
230294}
0 commit comments