@@ -27,8 +27,6 @@ vi.mock('utilities/src/platform', () => ({
2727 isInterface : false ,
2828} ) )
2929
30- const getIsSessionServiceEnabled = vi . fn ( ( ) => true )
31-
3230describe ( 'ApiInit Integration' , ( ) => {
3331 // Services and mocked boundaries
3432 let queryClient : QueryClient
@@ -44,11 +42,12 @@ describe('ApiInit Integration', () => {
4442 let uniswapIdentifierService : UniswapIdentifierService
4543 let sessionService : SessionService
4644 let initService : SessionInitializationService
45+ let isSessionServiceEnabled : boolean
4746
4847 beforeEach ( ( ) => {
4948 vi . clearAllMocks ( )
50- // Reset the feature flag mock to return true by default
51- getIsSessionServiceEnabled . mockReturnValue ( true )
49+ // Default to enabled
50+ isSessionServiceEnabled = true
5251
5352 // Mock only the boundaries (storage and network)
5453 mockStorage = new Map ( )
@@ -144,7 +143,7 @@ describe('ApiInit Integration', () => {
144143 // Act: Render the component
145144 render (
146145 < QueryClientProvider client = { queryClient } >
147- < ApiInit getSessionInitService = { ( ) => initService } getIsSessionServiceEnabled = { getIsSessionServiceEnabled } />
146+ < ApiInit getSessionInitService = { ( ) => initService } isSessionServiceEnabled = { isSessionServiceEnabled } />
148147 </ QueryClientProvider > ,
149148 )
150149
@@ -175,7 +174,7 @@ describe('ApiInit Integration', () => {
175174 // Act
176175 render (
177176 < QueryClientProvider client = { queryClient } >
178- < ApiInit getSessionInitService = { ( ) => initService } getIsSessionServiceEnabled = { getIsSessionServiceEnabled } />
177+ < ApiInit getSessionInitService = { ( ) => initService } isSessionServiceEnabled = { isSessionServiceEnabled } />
179178 </ QueryClientProvider > ,
180179 )
181180
@@ -203,7 +202,7 @@ describe('ApiInit Integration', () => {
203202 // Act
204203 render (
205204 < QueryClientProvider client = { queryClient } >
206- < ApiInit getSessionInitService = { ( ) => initService } getIsSessionServiceEnabled = { getIsSessionServiceEnabled } />
205+ < ApiInit getSessionInitService = { ( ) => initService } isSessionServiceEnabled = { isSessionServiceEnabled } />
207206 </ QueryClientProvider > ,
208207 )
209208
@@ -246,7 +245,7 @@ describe('ApiInit Integration', () => {
246245 // Act
247246 render (
248247 < QueryClientProvider client = { retryClient } >
249- < ApiInit getSessionInitService = { ( ) => initService } getIsSessionServiceEnabled = { getIsSessionServiceEnabled } />
248+ < ApiInit getSessionInitService = { ( ) => initService } isSessionServiceEnabled = { isSessionServiceEnabled } />
250249 </ QueryClientProvider > ,
251250 )
252251
@@ -271,7 +270,7 @@ describe('ApiInit Integration', () => {
271270 it ( 'prevents duplicate initialization on re-renders' , async ( ) => {
272271 const { rerender } = render (
273272 < QueryClientProvider client = { queryClient } >
274- < ApiInit getSessionInitService = { ( ) => initService } getIsSessionServiceEnabled = { getIsSessionServiceEnabled } />
273+ < ApiInit getSessionInitService = { ( ) => initService } isSessionServiceEnabled = { isSessionServiceEnabled } />
275274 </ QueryClientProvider > ,
276275 )
277276
@@ -282,13 +281,13 @@ describe('ApiInit Integration', () => {
282281 // Re-render multiple times
283282 rerender (
284283 < QueryClientProvider client = { queryClient } >
285- < ApiInit getSessionInitService = { ( ) => initService } getIsSessionServiceEnabled = { getIsSessionServiceEnabled } />
284+ < ApiInit getSessionInitService = { ( ) => initService } isSessionServiceEnabled = { isSessionServiceEnabled } />
286285 </ QueryClientProvider > ,
287286 )
288287
289288 rerender (
290289 < QueryClientProvider client = { queryClient } >
291- < ApiInit getSessionInitService = { ( ) => initService } getIsSessionServiceEnabled = { getIsSessionServiceEnabled } />
290+ < ApiInit getSessionInitService = { ( ) => initService } isSessionServiceEnabled = { isSessionServiceEnabled } />
292291 </ QueryClientProvider > ,
293292 )
294293
@@ -300,12 +299,12 @@ describe('ApiInit Integration', () => {
300299 } )
301300
302301 it ( 'should not initialize session when feature flag is disabled' , async ( ) => {
303- // Mock the feature flag as disabled
304- vi . mocked ( getIsSessionServiceEnabled ) . mockReturnValue ( false )
302+ // Set feature flag as disabled
303+ isSessionServiceEnabled = false
305304
306305 render (
307306 < QueryClientProvider client = { queryClient } >
308- < ApiInit getSessionInitService = { ( ) => initService } getIsSessionServiceEnabled = { getIsSessionServiceEnabled } />
307+ < ApiInit getSessionInitService = { ( ) => initService } isSessionServiceEnabled = { isSessionServiceEnabled } />
309308 </ QueryClientProvider > ,
310309 )
311310
@@ -317,4 +316,44 @@ describe('ApiInit Integration', () => {
317316 expect ( mockApiClient . challenge ) . not . toHaveBeenCalled ( )
318317 expect ( mockApiClient . upgradeSession ) . not . toHaveBeenCalled ( )
319318 } )
319+
320+ it ( 'should wait for feature flag to be enabled before initializing session' , async ( ) => {
321+ // Start with feature flag disabled (simulating Statsig loading)
322+ isSessionServiceEnabled = false
323+
324+ const { rerender } = render (
325+ < QueryClientProvider client = { queryClient } >
326+ < ApiInit getSessionInitService = { ( ) => initService } isSessionServiceEnabled = { isSessionServiceEnabled } />
327+ </ QueryClientProvider > ,
328+ )
329+
330+ // Assert that initialization does not happen while flag is disabled
331+ // Use a try/catch with waitFor to verify the call never happens
332+ await expect (
333+ waitFor (
334+ ( ) => {
335+ expect ( mockApiClient . initSession ) . toHaveBeenCalled ( )
336+ } ,
337+ { timeout : 100 } ,
338+ ) ,
339+ ) . rejects . toThrow ( )
340+
341+ // Verify it still hasn't been called
342+ expect ( mockApiClient . initSession ) . not . toHaveBeenCalled ( )
343+
344+ // Now simulate feature flag becoming enabled (Statsig loaded)
345+ isSessionServiceEnabled = true
346+
347+ // Trigger a re-render
348+ rerender (
349+ < QueryClientProvider client = { queryClient } >
350+ < ApiInit getSessionInitService = { ( ) => initService } isSessionServiceEnabled = { isSessionServiceEnabled } />
351+ </ QueryClientProvider > ,
352+ )
353+
354+ // Now session initialization should occur
355+ await waitFor ( ( ) => {
356+ expect ( mockApiClient . initSession ) . toHaveBeenCalled ( )
357+ } )
358+ } )
320359} )
0 commit comments