@@ -3,6 +3,7 @@ import Player from '../../src/js/player.js';
3
3
import TestHelpers from './test-helpers.js' ;
4
4
import sinon from 'sinon' ;
5
5
import window from 'global/window' ;
6
+ import document from 'global/document' ;
6
7
7
8
const FullscreenTestHelpers = {
8
9
makePlayer ( prefixed , playerOptions , videoTag ) {
@@ -229,7 +230,7 @@ QUnit.test('full window can be preferred to fullscreen tech', function(assert) {
229
230
} ) ;
230
231
231
232
QUnit . test ( 'fullwindow mode should exit when ESC event triggered' , function ( assert ) {
232
- const player = FullscreenTestHelpers . makePlayer ( true ) ;
233
+ const player = TestHelpers . makePlayer ( ) ;
233
234
234
235
player . enterFullWindow ( ) ;
235
236
assert . ok ( player . isFullWindow , 'enterFullWindow should be called' ) ;
@@ -280,3 +281,70 @@ QUnit.test('fullscreenerror event from Html5 should pass through player', functi
280
281
281
282
player . dispose ( ) ;
282
283
} ) ;
284
+
285
+ // only run where we have sinon.promise
286
+ const skipOrTest = sinon . promise ? 'test' : 'skip' ;
287
+
288
+ QUnit [ skipOrTest ] ( 'requestFullscreen returns a rejected promise if unable to go fullscreen' , function ( assert ) {
289
+ const player = TestHelpers . makePlayer ( ) ;
290
+ const playerEl = player . el ( ) ;
291
+ const stub = sinon . stub ( playerEl , player . fsApi_ . requestFullscreen ) ;
292
+ const promise = sinon . promise ( ) ;
293
+
294
+ stub . returns ( promise ) ;
295
+ promise . reject ( new Error ( 'Cannot go fullscreen' ) ) ;
296
+
297
+ assert . rejects (
298
+ player . requestFullscreen ( ) ,
299
+ new Error ( 'Cannot go fullscreen' ) ,
300
+ 'our promise was rejected'
301
+ ) ;
302
+
303
+ stub . restore ( ) ;
304
+ } ) ;
305
+
306
+ QUnit [ skipOrTest ] ( 'requestFullscreen returns a resolved promise if we were fullscreen' , function ( assert ) {
307
+ const player = TestHelpers . makePlayer ( ) ;
308
+ const playerEl = player . el ( ) ;
309
+ const stub = sinon . stub ( playerEl , player . fsApi_ . requestFullscreen ) ;
310
+ const promise = sinon . promise ( ) ;
311
+
312
+ stub . returns ( promise ) ;
313
+ // pretend we successfully went fullscreen.
314
+ promise . resolve ( ) ;
315
+
316
+ player . requestFullscreen ( ) . then ( ( ) => assert . ok ( true , 'our promise resolved' ) ) ;
317
+
318
+ stub . restore ( ) ;
319
+ } ) ;
320
+
321
+ QUnit [ skipOrTest ] ( 'exitFullscreen returns a rejected promise if document is not active' , function ( assert ) {
322
+ const player = TestHelpers . makePlayer ( ) ;
323
+ const stub = sinon . stub ( document , player . fsApi_ . exitFullscreen ) ;
324
+ const promise = sinon . promise ( ) ;
325
+
326
+ stub . returns ( promise ) ;
327
+ promise . reject ( new Error ( 'Document not active' ) ) ;
328
+
329
+ assert . rejects (
330
+ player . exitFullscreen ( ) ,
331
+ new Error ( 'Document not active' ) ,
332
+ 'our promise was rejected'
333
+ ) ;
334
+
335
+ stub . restore ( ) ;
336
+ } ) ;
337
+
338
+ QUnit [ skipOrTest ] ( 'exitFullscreen returns a resolved promise if we were fullscreen' , function ( assert ) {
339
+ const player = TestHelpers . makePlayer ( ) ;
340
+ const stub = sinon . stub ( document , player . fsApi_ . exitFullscreen ) ;
341
+ const promise = sinon . promise ( ) ;
342
+
343
+ stub . returns ( promise ) ;
344
+ // pretend we successfully exited.
345
+ promise . resolve ( ) ;
346
+
347
+ player . exitFullscreen ( ) . then ( ( ) => assert . ok ( true , 'our promise resolved' ) ) ;
348
+
349
+ stub . restore ( ) ;
350
+ } ) ;
0 commit comments