@@ -37,7 +37,7 @@ describe('useTrack', () => {
37
37
} ) }
38
38
</ SplitFactoryProvider > ,
39
39
) ;
40
- const track = outerFactory . client ( ) . track as jest . Mock ;
40
+ const track = outerFactory . client ( ) . track ;
41
41
expect ( track ) . toBe ( clientTrack ) ;
42
42
expect ( track ) . toBeCalledWith ( tt , eventType , value , properties ) ;
43
43
expect ( track ) . toHaveReturnedWith ( trackResult ) ;
@@ -59,7 +59,7 @@ describe('useTrack', () => {
59
59
</ SplitClient >
60
60
</ SplitFactoryProvider >
61
61
) ;
62
- const track = outerFactory . client ( 'user2' ) . track as jest . Mock ;
62
+ const track = outerFactory . client ( 'user2' ) . track ;
63
63
expect ( track ) . toBeCalledWith ( tt , eventType , value , properties ) ;
64
64
expect ( track ) . toHaveReturnedWith ( trackResult ) ;
65
65
} ) ;
@@ -77,7 +77,7 @@ describe('useTrack', () => {
77
77
} ) }
78
78
</ SplitFactoryProvider > ,
79
79
) ;
80
- const track = outerFactory . client ( 'user2' ) . track as jest . Mock ;
80
+ const track = outerFactory . client ( 'user2' ) . track ;
81
81
expect ( track ) . toBeCalledWith ( tt , eventType , value , properties ) ;
82
82
expect ( track ) . toHaveReturnedWith ( trackResult ) ;
83
83
} ) ;
@@ -119,13 +119,33 @@ describe('useTrack', () => {
119
119
splitKey = 'user2' ; // `clientTrack` dependency changed
120
120
act ( ( ) => getLastInstance ( SplitFactory ) . client ( ) . __emitter__ . emit ( Event . SDK_UPDATE ) ) ;
121
121
122
- let track = getLastInstance ( SplitFactory ) . client ( ) . track as jest . Mock ;
122
+ let track = getLastInstance ( SplitFactory ) . client ( ) . track ;
123
123
expect ( track ) . toBeCalledWith ( tt , eventType , value , properties ) ;
124
124
expect ( track ) . toBeCalledTimes ( 4 ) ; // 3 from render + 1 from useEffect
125
125
126
- track = getLastInstance ( SplitFactory ) . client ( 'user2' ) . track as jest . Mock ;
126
+ track = getLastInstance ( SplitFactory ) . client ( 'user2' ) . track ;
127
127
expect ( track ) . toBeCalledWith ( tt , eventType , value , properties ) ;
128
128
expect ( track ) . toBeCalledTimes ( 2 ) ; // 1 from render + 1 from useEffect (`clientTrack` dependency changed)
129
129
} ) ;
130
130
131
+ test ( 'does not re-render on SDK events' , ( ) => {
132
+ render (
133
+ < SplitFactoryProvider config = { sdkBrowser } updateOnSdkReady = { false } updateOnSdkReadyFromCache = { false } >
134
+ { React . createElement ( ( ) => {
135
+ const clientTrack = useTrack ( ) ;
136
+ clientTrack ( tt , eventType , value , properties ) ;
137
+
138
+ return null ;
139
+ } ) }
140
+ </ SplitFactoryProvider > ,
141
+ ) ;
142
+
143
+ act ( ( ) => getLastInstance ( SplitFactory ) . client ( ) . __emitter__ . emit ( Event . SDK_READY_TIMED_OUT ) ) ;
144
+ act ( ( ) => getLastInstance ( SplitFactory ) . client ( ) . __emitter__ . emit ( Event . SDK_READY_FROM_CACHE ) ) ;
145
+ act ( ( ) => getLastInstance ( SplitFactory ) . client ( ) . __emitter__ . emit ( Event . SDK_READY ) ) ;
146
+ act ( ( ) => getLastInstance ( SplitFactory ) . client ( ) . __emitter__ . emit ( Event . SDK_UPDATE ) ) ;
147
+
148
+ expect ( getLastInstance ( SplitFactory ) . client ( ) . track ) . toBeCalledTimes ( 1 ) ;
149
+ } ) ;
150
+
131
151
} ) ;
0 commit comments