33const path = require ( 'path' ) ;
44const React = require ( 'react' ) ;
55const renderer = require ( 'react-test-renderer' ) ;
6- const Loadable = require ( './src' ) ;
7- const { report} = require ( 'import-inspector' ) ;
6+ const Loadable = require ( '../src' ) ;
87
98function waitFor ( delay ) {
109 return new Promise ( resolve => {
1110 setTimeout ( resolve , delay ) ;
1211 } ) ;
1312}
1413
15- function createLoader ( delay , Component , error , metadata ) {
14+ function createLoader ( delay , loader , error ) {
1615 return ( ) => {
17- return report ( waitFor ( delay ) . then ( ( ) => {
18- if ( Component ) {
19- return Component ;
16+ return waitFor ( delay ) . then ( ( ) => {
17+ if ( loader ) {
18+ return loader ( ) ;
2019 } else {
2120 throw error ;
2221 }
23- } ) , metadata ) ;
22+ } ) ;
2423 } ;
2524}
2625
@@ -32,9 +31,15 @@ function MyComponent(props) {
3231 return < div > MyComponent { JSON . stringify ( props ) } </ div > ;
3332}
3433
34+ afterEach ( async ( ) => {
35+ try {
36+ await Loadable . preloadAll ( ) ;
37+ } catch ( err ) { }
38+ } ) ;
39+
3540test ( 'loading success' , async ( ) => {
3641 let LoadableMyComponent = Loadable ( {
37- loader : createLoader ( 400 , MyComponent ) ,
42+ loader : createLoader ( 400 , ( ) => MyComponent ) ,
3843 loading : MyLoadingComponent
3944 } ) ;
4045
@@ -53,7 +58,7 @@ test('loading success', async () => {
5358
5459test ( 'delay and timeout' , async ( ) => {
5560 let LoadableMyComponent = Loadable ( {
56- loader : createLoader ( 300 , MyComponent ) ,
61+ loader : createLoader ( 300 , ( ) => MyComponent ) ,
5762 loading : MyLoadingComponent ,
5863 delay : 100 ,
5964 timeout : 200 ,
@@ -87,33 +92,33 @@ test('loading error', async () => {
8792
8893test ( 'server side rendering' , async ( ) => {
8994 let LoadableMyComponent = Loadable ( {
90- loader : createLoader ( 400 , null , new Error ( 'test error' ) , {
91- serverSideRequirePath : path . join ( __dirname , './__fixtures__/component.js' )
92- } ) ,
95+ loader : createLoader ( 400 , ( ) => require ( '../__fixtures__/component' ) ) ,
9396 loading : MyLoadingComponent ,
9497 } ) ;
9598
99+ await Loadable . preloadAll ( ) ;
100+
96101 let component = renderer . create ( < LoadableMyComponent prop = "baz" /> ) ;
97102
98103 expect ( component . toJSON ( ) ) . toMatchSnapshot ( ) ; // serverside
99104} ) ;
100105
101106test ( 'server side rendering es6' , async ( ) => {
102107 let LoadableMyComponent = Loadable ( {
103- loader : createLoader ( 400 , null , new Error ( 'test error' ) , {
104- serverSideRequirePath : path . join ( __dirname , './__fixtures__/component.es6.js' )
105- } ) ,
108+ loader : createLoader ( 400 , ( ) => require ( '../__fixtures__/component.es6' ) ) ,
106109 loading : MyLoadingComponent ,
107110 } ) ;
108111
112+ await Loadable . preloadAll ( ) ;
113+
109114 let component = renderer . create ( < LoadableMyComponent prop = "baz" /> ) ;
110115
111116 expect ( component . toJSON ( ) ) . toMatchSnapshot ( ) ; // serverside
112117} ) ;
113118
114119test ( 'preload' , async ( ) => {
115120 let LoadableMyComponent = Loadable ( {
116- loader : createLoader ( 400 , MyComponent ) ,
121+ loader : createLoader ( 400 , ( ) => MyComponent ) ,
117122 loading : MyLoadingComponent
118123 } ) ;
119124
@@ -132,7 +137,7 @@ test('preload', async () => {
132137
133138test ( 'render' , async ( ) => {
134139 let LoadableMyComponent = Loadable ( {
135- loader : createLoader ( 400 , { MyComponent } ) ,
140+ loader : createLoader ( 400 , ( ) => ( { MyComponent } ) ) ,
136141 loading : MyLoadingComponent ,
137142 render ( loaded , props ) {
138143 return < loaded . MyComponent { ...props } /> ;
@@ -149,8 +154,8 @@ test('render', async () => {
149154test ( 'loadable map success' , async ( ) => {
150155 let LoadableMyComponent = Loadable . Map ( {
151156 loader : {
152- a : createLoader ( 200 , { MyComponent } ) ,
153- b : createLoader ( 400 , { MyComponent } ) ,
157+ a : createLoader ( 200 , ( ) => ( { MyComponent } ) ) ,
158+ b : createLoader ( 400 , ( ) => ( { MyComponent } ) ) ,
154159 } ,
155160 loading : MyLoadingComponent ,
156161 render ( loaded , props ) {
@@ -174,7 +179,7 @@ test('loadable map success', async () => {
174179test ( 'loadable map error' , async ( ) => {
175180 let LoadableMyComponent = Loadable . Map ( {
176181 loader : {
177- a : createLoader ( 200 , { MyComponent } ) ,
182+ a : createLoader ( 200 , ( ) => ( { MyComponent } ) ) ,
178183 b : createLoader ( 400 , null , new Error ( 'test error' ) ) ,
179184 } ,
180185 loading : MyLoadingComponent ,
0 commit comments