@@ -549,6 +549,69 @@ describe('preStartRum', () => {
549549 } )
550550 } )
551551
552+ describe ( 'passes pre-start contexts to doStartRum' , ( ) => {
553+ function mockStartRumResult ( ) : StartRumResult {
554+ return {
555+ globalContext : { setContext : noop } as any ,
556+ userContext : { setContext : noop } as any ,
557+ accountContext : { setContext : noop } as any ,
558+ } as unknown as StartRumResult
559+ }
560+
561+ it ( 'should pass global context set before init to doStartRum' , ( ) => {
562+ const { strategy, doStartRumSpy } = createPreStartStrategyWithDefaults ( )
563+ doStartRumSpy . and . returnValue ( mockStartRumResult ( ) )
564+
565+ strategy . globalContext . setContextProperty ( 'foo' , 'bar' )
566+ strategy . init ( DEFAULT_INIT_CONFIGURATION , PUBLIC_API )
567+
568+ expect ( doStartRumSpy ) . toHaveBeenCalledTimes ( 1 )
569+ const initialContexts = doStartRumSpy . calls . mostRecent ( ) . args [ 5 ]
570+ expect ( initialContexts ) . toBeDefined ( )
571+ expect ( initialContexts . globalContext ) . toEqual ( { foo : 'bar' } )
572+ } )
573+
574+ it ( 'should pass user context set before init to doStartRum' , ( ) => {
575+ const { strategy, doStartRumSpy } = createPreStartStrategyWithDefaults ( )
576+ doStartRumSpy . and . returnValue ( mockStartRumResult ( ) )
577+
578+ strategy . userContext . setContextProperty ( 'id' , 'user-123' )
579+ strategy . init ( DEFAULT_INIT_CONFIGURATION , PUBLIC_API )
580+
581+ expect ( doStartRumSpy ) . toHaveBeenCalledTimes ( 1 )
582+ const initialContexts = doStartRumSpy . calls . mostRecent ( ) . args [ 5 ]
583+ expect ( initialContexts ) . toBeDefined ( )
584+ expect ( initialContexts . userContext ) . toEqual ( { id : 'user-123' } )
585+ } )
586+
587+ it ( 'should pass account context set before init to doStartRum' , ( ) => {
588+ const { strategy, doStartRumSpy } = createPreStartStrategyWithDefaults ( )
589+ doStartRumSpy . and . returnValue ( mockStartRumResult ( ) )
590+
591+ strategy . accountContext . setContextProperty ( 'id' , 'account-456' )
592+ strategy . init ( DEFAULT_INIT_CONFIGURATION , PUBLIC_API )
593+
594+ expect ( doStartRumSpy ) . toHaveBeenCalledTimes ( 1 )
595+ const initialContexts = doStartRumSpy . calls . mostRecent ( ) . args [ 5 ]
596+ expect ( initialContexts ) . toBeDefined ( )
597+ expect ( initialContexts . accountContext ) . toEqual ( { id : 'account-456' } )
598+ } )
599+
600+ it ( 'should pass empty contexts when nothing is set before init' , ( ) => {
601+ const { strategy, doStartRumSpy } = createPreStartStrategyWithDefaults ( )
602+ doStartRumSpy . and . returnValue ( mockStartRumResult ( ) )
603+
604+ strategy . init ( DEFAULT_INIT_CONFIGURATION , PUBLIC_API )
605+
606+ expect ( doStartRumSpy ) . toHaveBeenCalledTimes ( 1 )
607+ const initialContexts = doStartRumSpy . calls . mostRecent ( ) . args [ 5 ]
608+ expect ( initialContexts ) . toBeDefined ( )
609+ expect ( initialContexts . globalContext ) . toEqual ( { } )
610+ expect ( initialContexts . userContext ) . toEqual ( { } )
611+ expect ( initialContexts . accountContext ) . toEqual ( { } )
612+ } )
613+ } )
614+
552615 describe ( 'buffers API calls before starting RUM' , ( ) => {
553616 let strategy : Strategy
554617 let doStartRumSpy : jasmine . Spy < DoStartRum >
0 commit comments