@@ -3,6 +3,16 @@ var FastBootInfo = require('./../src/fastboot-info.js');
33var FastBootResponse = require ( './../src/fastboot-response.js' ) ;
44var FastBootRequest = require ( './../src/fastboot-request.js' ) ;
55
6+ function delayFor ( ms ) {
7+ let promise = new Promise ( resolve => {
8+ setTimeout ( ( ) => {
9+ resolve ( ) ;
10+ } , ms ) ;
11+ } ) ;
12+
13+ return promise ;
14+ }
15+
616describe ( 'FastBootInfo' , function ( ) {
717 var response ;
818 var request ;
@@ -37,4 +47,25 @@ describe('FastBootInfo', function() {
3747 it ( 'has metadata' , function ( ) {
3848 expect ( fastbootInfo . metadata ) . to . deep . equal ( metadata ) ;
3949 } ) ;
50+
51+ it ( 'can use deferRendering' , async function ( ) {
52+ let steps = [ ] ;
53+
54+ steps . push ( 'deferRendering called' ) ;
55+
56+ fastbootInfo . deferRendering ( delayFor ( 10 ) . then ( ( ) => steps . push ( 'first delay completed' ) ) ) ;
57+ fastbootInfo . deferRendering ( delayFor ( 10 ) . then ( ( ) => steps . push ( 'second delay completed' ) ) ) ;
58+ fastbootInfo . deferRendering ( delayFor ( 20 ) . then ( ( ) => steps . push ( 'third delay completed' ) ) ) ;
59+ fastbootInfo . deferRendering ( delayFor ( 15 ) . then ( ( ) => steps . push ( 'fourth delay completed' ) ) ) ;
60+
61+ await fastbootInfo . deferredPromise ;
62+
63+ expect ( steps ) . to . deep . equal ( [
64+ 'deferRendering called' ,
65+ 'first delay completed' ,
66+ 'second delay completed' ,
67+ 'fourth delay completed' ,
68+ 'third delay completed' ,
69+ ] ) ;
70+ } ) ;
4071} ) ;
0 commit comments