@@ -128,7 +128,7 @@ describe('given a BrowserDataManager with mocked dependencies', () => {
128128 off : jest . fn ( ) ,
129129 } as unknown as jest . Mocked < FlagManager > ;
130130
131- browserConfig = validateOptions ( { streaming : false } , logger ) ;
131+ browserConfig = validateOptions ( { } , logger ) ;
132132 baseHeaders = { } ;
133133 emitter = {
134134 emit : jest . fn ( ) ,
@@ -262,7 +262,7 @@ describe('given a BrowserDataManager with mocked dependencies', () => {
262262 await dataManager . identify ( identifyResolve , identifyReject , context , identifyOptions ) ;
263263
264264 expect ( platform . requests . createEventSource ) . not . toHaveBeenCalled ( ) ;
265- dataManager . startDataSource ( ) ;
265+ dataManager . setForcedStreaming ( true ) ;
266266 expect ( platform . requests . createEventSource ) . toHaveBeenCalled ( ) ;
267267 } ) ;
268268
@@ -277,8 +277,8 @@ describe('given a BrowserDataManager with mocked dependencies', () => {
277277 await dataManager . identify ( identifyResolve , identifyReject , context , identifyOptions ) ;
278278
279279 expect ( platform . requests . createEventSource ) . not . toHaveBeenCalled ( ) ;
280- dataManager . startDataSource ( ) ;
281- dataManager . startDataSource ( ) ;
280+ dataManager . setForcedStreaming ( true ) ;
281+ dataManager . setForcedStreaming ( true ) ;
282282 expect ( platform . requests . createEventSource ) . toHaveBeenCalledTimes ( 1 ) ;
283283 expect ( logger . debug ) . toHaveBeenCalledWith (
284284 '[BrowserDataManager] Update processor already active. Not changing state.' ,
@@ -287,10 +287,66 @@ describe('given a BrowserDataManager with mocked dependencies', () => {
287287
288288 it ( 'does not start a stream if identify has not been called' , async ( ) => {
289289 expect ( platform . requests . createEventSource ) . not . toHaveBeenCalled ( ) ;
290- dataManager . startDataSource ( ) ;
290+ dataManager . setForcedStreaming ( true ) ;
291291 expect ( platform . requests . createEventSource ) . not . toHaveBeenCalledTimes ( 1 ) ;
292292 expect ( logger . debug ) . toHaveBeenCalledWith (
293293 '[BrowserDataManager] Context not set, not starting update processor.' ,
294294 ) ;
295295 } ) ;
296+
297+ it ( 'starts a stream on demand when not forced on/off' , async ( ) => {
298+ const context = Context . fromLDContext ( { kind : 'user' , key : 'test-user' } ) ;
299+ const identifyOptions : LDIdentifyOptions = { waitForNetworkResults : false } ;
300+ const identifyResolve = jest . fn ( ) ;
301+ const identifyReject = jest . fn ( ) ;
302+
303+ flagManager . loadCached . mockResolvedValue ( false ) ;
304+
305+ await dataManager . identify ( identifyResolve , identifyReject , context , identifyOptions ) ;
306+
307+ expect ( platform . requests . createEventSource ) . not . toHaveBeenCalled ( ) ;
308+ dataManager . setAutomaticStreamingState ( true ) ;
309+ expect ( platform . requests . createEventSource ) . toHaveBeenCalled ( ) ;
310+ expect ( logger . debug ) . toHaveBeenCalledWith ( '[BrowserDataManager] Starting update processor.' ) ;
311+ expect ( logger . debug ) . toHaveBeenCalledWith (
312+ '[BrowserDataManager] Updating streaming state. forced(undefined) automatic(true)' ,
313+ ) ;
314+ } ) ;
315+
316+ it ( 'does not start a stream when forced off' , async ( ) => {
317+ const context = Context . fromLDContext ( { kind : 'user' , key : 'test-user' } ) ;
318+ const identifyOptions : LDIdentifyOptions = { waitForNetworkResults : false } ;
319+ const identifyResolve = jest . fn ( ) ;
320+ const identifyReject = jest . fn ( ) ;
321+
322+ dataManager . setForcedStreaming ( false ) ;
323+
324+ flagManager . loadCached . mockResolvedValue ( false ) ;
325+
326+ await dataManager . identify ( identifyResolve , identifyReject , context , identifyOptions ) ;
327+
328+ expect ( platform . requests . createEventSource ) . not . toHaveBeenCalled ( ) ;
329+ dataManager . setAutomaticStreamingState ( true ) ;
330+ expect ( platform . requests . createEventSource ) . not . toHaveBeenCalled ( ) ;
331+ expect ( logger . debug ) . toHaveBeenCalledWith (
332+ '[BrowserDataManager] Updating streaming state. forced(false) automatic(true)' ,
333+ ) ;
334+ } ) ;
335+
336+ it ( 'starts streaming on identify if the automatic state is true' , async ( ) => {
337+ const context = Context . fromLDContext ( { kind : 'user' , key : 'test-user' } ) ;
338+ const identifyOptions : LDIdentifyOptions = { waitForNetworkResults : false } ;
339+ const identifyResolve = jest . fn ( ) ;
340+ const identifyReject = jest . fn ( ) ;
341+
342+ dataManager . setForcedStreaming ( undefined ) ;
343+ dataManager . setAutomaticStreamingState ( true ) ;
344+ expect ( platform . requests . createEventSource ) . not . toHaveBeenCalled ( ) ;
345+
346+ flagManager . loadCached . mockResolvedValue ( false ) ;
347+
348+ await dataManager . identify ( identifyResolve , identifyReject , context , identifyOptions ) ;
349+
350+ expect ( platform . requests . createEventSource ) . toHaveBeenCalled ( ) ;
351+ } ) ;
296352} ) ;
0 commit comments