@@ -2,7 +2,7 @@ import React from 'react';
2
2
import { render , act } from '@testing-library/react' ;
3
3
4
4
/** Mocks */
5
- import { mockSdk , Event } from './testUtils/mockSplitFactory' ;
5
+ import { mockSdk , Event , getLastInstance } from './testUtils/mockSplitFactory' ;
6
6
jest . mock ( '@splitsoftware/splitio/client' , ( ) => {
7
7
return { SplitFactory : mockSdk ( ) } ;
8
8
} ) ;
@@ -17,15 +17,19 @@ import { SplitClient } from '../SplitClient';
17
17
import { SplitContext } from '../SplitContext' ;
18
18
import { __factories , IClientWithContext } from '../utils' ;
19
19
import { WARN_SF_CONFIG_AND_FACTORY } from '../constants' ;
20
- import { INITIAL_CONTEXT } from './testUtils/utils' ;
20
+ import { INITIAL_STATUS } from './testUtils/utils' ;
21
21
22
22
describe ( 'SplitFactoryProvider' , ( ) => {
23
23
24
24
test ( 'passes no-ready props to the child if initialized with a config.' , ( ) => {
25
25
render (
26
26
< SplitFactoryProvider config = { sdkBrowser } >
27
27
{ ( childProps : ISplitFactoryProviderChildProps ) => {
28
- expect ( childProps ) . toEqual ( INITIAL_CONTEXT ) ;
28
+ expect ( childProps ) . toEqual ( {
29
+ ...INITIAL_STATUS ,
30
+ factory : getLastInstance ( SplitFactory ) ,
31
+ client : getLastInstance ( SplitFactory ) . client ( ) ,
32
+ } ) ;
29
33
return null ;
30
34
} }
31
35
</ SplitFactoryProvider >
@@ -43,7 +47,7 @@ describe('SplitFactoryProvider', () => {
43
47
< SplitFactoryProvider factory = { outerFactory } >
44
48
{ ( childProps : ISplitFactoryProviderChildProps ) => {
45
49
expect ( childProps ) . toEqual ( {
46
- ...INITIAL_CONTEXT ,
50
+ ...INITIAL_STATUS ,
47
51
factory : outerFactory ,
48
52
client : outerFactory . client ( ) ,
49
53
isReady : true ,
@@ -84,7 +88,7 @@ describe('SplitFactoryProvider', () => {
84
88
default :
85
89
fail ( 'Child must not be rerendered' ) ;
86
90
} // eslint-disable-next-line no-use-before-define
87
- if ( factory ) expect ( factory ) . toBe ( innerFactory ) ;
91
+ expect ( factory ) . toBe ( innerFactory || getLastInstance ( SplitFactory ) ) ;
88
92
expect ( lastUpdate ) . toBeGreaterThan ( previousLastUpdate ) ;
89
93
renderTimes ++ ;
90
94
previousLastUpdate = lastUpdate ;
@@ -93,7 +97,7 @@ describe('SplitFactoryProvider', () => {
93
97
</ SplitFactoryProvider >
94
98
) ;
95
99
96
- const innerFactory = ( SplitFactory as jest . Mock ) . mock . results . slice ( - 1 ) [ 0 ] . value ;
100
+ const innerFactory = getLastInstance ( SplitFactory ) ;
97
101
act ( ( ) => ( innerFactory as any ) . client ( ) . __emitter__ . emit ( Event . SDK_READY_TIMED_OUT ) ) ;
98
102
act ( ( ) => ( innerFactory as any ) . client ( ) . __emitter__ . emit ( Event . SDK_READY_FROM_CACHE ) ) ;
99
103
act ( ( ) => ( innerFactory as any ) . client ( ) . __emitter__ . emit ( Event . SDK_READY ) ) ;
@@ -168,7 +172,7 @@ describe('SplitFactoryProvider', () => {
168
172
default :
169
173
fail ( 'Child must not be rerendered' ) ;
170
174
} // eslint-disable-next-line no-use-before-define
171
- if ( factory ) expect ( factory ) . toBe ( innerFactory ) ;
175
+ expect ( factory ) . toBe ( innerFactory || getLastInstance ( SplitFactory ) ) ;
172
176
expect ( lastUpdate ) . toBeGreaterThan ( previousLastUpdate ) ;
173
177
renderTimes ++ ;
174
178
previousLastUpdate = lastUpdate ;
@@ -177,7 +181,7 @@ describe('SplitFactoryProvider', () => {
177
181
</ SplitFactoryProvider >
178
182
) ;
179
183
180
- const innerFactory = ( SplitFactory as jest . Mock ) . mock . results . slice ( - 1 ) [ 0 ] . value ;
184
+ const innerFactory = getLastInstance ( SplitFactory ) ;
181
185
act ( ( ) => ( innerFactory as any ) . client ( ) . __emitter__ . emit ( Event . SDK_READY_TIMED_OUT ) ) ;
182
186
act ( ( ) => ( innerFactory as any ) . client ( ) . __emitter__ . emit ( Event . SDK_READY ) ) ;
183
187
act ( ( ) => ( innerFactory as any ) . client ( ) . __emitter__ . emit ( Event . SDK_UPDATE ) ) ;
@@ -241,7 +245,7 @@ describe('SplitFactoryProvider', () => {
241
245
default :
242
246
fail ( 'Child must not be rerendered' ) ;
243
247
} // eslint-disable-next-line no-use-before-define
244
- if ( factory ) expect ( factory ) . toBe ( innerFactory ) ;
248
+ expect ( factory ) . toBe ( innerFactory || getLastInstance ( SplitFactory ) ) ;
245
249
expect ( lastUpdate ) . toBeGreaterThan ( previousLastUpdate ) ;
246
250
renderTimes ++ ;
247
251
previousLastUpdate = lastUpdate ;
@@ -250,7 +254,7 @@ describe('SplitFactoryProvider', () => {
250
254
</ SplitFactoryProvider >
251
255
) ;
252
256
253
- const innerFactory = ( SplitFactory as jest . Mock ) . mock . results . slice ( - 1 ) [ 0 ] . value ;
257
+ const innerFactory = getLastInstance ( SplitFactory ) ;
254
258
act ( ( ) => ( innerFactory as any ) . client ( ) . __emitter__ . emit ( Event . SDK_READY_TIMED_OUT ) ) ;
255
259
act ( ( ) => ( innerFactory as any ) . client ( ) . __emitter__ . emit ( Event . SDK_READY ) ) ;
256
260
act ( ( ) => ( innerFactory as any ) . client ( ) . __emitter__ . emit ( Event . SDK_UPDATE ) ) ;
@@ -296,7 +300,11 @@ describe('SplitFactoryProvider', () => {
296
300
return (
297
301
< SplitContext . Consumer >
298
302
{ ( value ) => {
299
- expect ( value ) . toEqual ( INITIAL_CONTEXT ) ;
303
+ expect ( value ) . toEqual ( {
304
+ ...INITIAL_STATUS ,
305
+ factory : getLastInstance ( SplitFactory ) ,
306
+ client : getLastInstance ( SplitFactory ) . client ( ) ,
307
+ } ) ;
300
308
done ( ) ;
301
309
return null ;
302
310
} }
@@ -344,14 +352,14 @@ describe('SplitFactoryProvider', () => {
344
352
case 5 :
345
353
expect ( isReady ) . toBe ( false ) ;
346
354
expect ( hasTimedout ) . toBe ( false ) ;
347
- expect ( factory ) . toBe ( undefined ) ;
355
+ expect ( factory ) . toBe ( getLastInstance ( SplitFactory ) ) ;
348
356
return null ;
349
357
case 3 :
350
358
case 4 :
351
359
case 6 :
352
360
expect ( isReady ) . toBe ( true ) ;
353
361
expect ( hasTimedout ) . toBe ( true ) ;
354
- expect ( factory ) . not . toBe ( undefined ) ;
362
+ expect ( factory ) . toBe ( getLastInstance ( SplitFactory ) ) ;
355
363
createdFactories . add ( factory ! ) ;
356
364
clientDestroySpies . push ( jest . spyOn ( factory ! . client ( ) , 'destroy' ) ) ;
357
365
return (
@@ -368,7 +376,7 @@ describe('SplitFactoryProvider', () => {
368
376
} ;
369
377
370
378
const emitSdkEvents = ( ) => {
371
- const factory = ( SplitFactory as jest . Mock ) . mock . results . slice ( - 1 ) [ 0 ] . value ;
379
+ const factory = getLastInstance ( SplitFactory ) ;
372
380
factory . client ( ) . __emitter__ . emit ( Event . SDK_READY_TIMED_OUT )
373
381
factory . client ( ) . __emitter__ . emit ( Event . SDK_READY )
374
382
} ;
0 commit comments