@@ -22,6 +22,7 @@ import {
2222 DEFAULT_CONFIG ,
2323 mockFetch
2424} from '../../test-utils/test-utils' ;
25+ import { advanceTo } from 'jest-date-mock' ;
2526
2627global . fetch = mockFetch ;
2728const NAVIGATION = 'navigation' ;
@@ -469,6 +470,7 @@ describe('SessionManager tests', () => {
469470
470471 // Assert
471472 expect ( session . record ) . toBeTruthy ( ) ;
473+ expect ( sessionManager . isSampled ( ) ) . toBeTruthy ( ) ;
472474 } ) ;
473475
474476 test ( 'when sessionSampleRate is zero then session.record is false' , async ( ) => {
@@ -482,6 +484,53 @@ describe('SessionManager tests', () => {
482484
483485 // Assert
484486 expect ( session . record ) . toBeFalsy ( ) ;
487+ expect ( sessionManager . isSampled ( ) ) . toBeFalsy ( ) ;
488+ } ) ;
489+
490+ test ( 'when sessionId is nil then create new session with same sampling decision' , async ( ) => {
491+ mockRandom ( [ 0.01 ] ) ;
492+ // Init
493+ const sessionManager = defaultSessionManager ( {
494+ ...DEFAULT_CONFIG ,
495+ ...{ sessionSampleRate : 0.5 , allowCookies : true }
496+ } ) ;
497+
498+ // Ensure isSampled() returns a different value
499+ mockRandom ( [ 0.99 ] ) ;
500+ const session = sessionManager . getSession ( ) ;
501+
502+ // Assert
503+ expect ( session . record ) . toBeTruthy ( ) ;
504+ expect ( sessionManager . isSampled ( ) ) . toBeTruthy ( ) ;
505+ } ) ;
506+
507+ test ( 'when sessionId is not nil then create new session with different sampling decision' , async ( ) => {
508+ const dateNow = new Date ( ) ;
509+ mockRandom ( [ 0.01 ] ) ;
510+ // Init
511+ const sessionManager = defaultSessionManager ( {
512+ ...DEFAULT_CONFIG ,
513+ ...{ sessionSampleRate : 0.5 }
514+ } ) ;
515+
516+ // create new session
517+ // new session should have same sampling decision as nil session
518+ let session = sessionManager . getSession ( ) ;
519+ expect ( session . sessionId ) . not . toEqual ( NIL_UUID ) ;
520+ expect ( session . record ) . toBeTruthy ( ) ;
521+ expect ( sessionManager . isSampled ( ) ) . toBeTruthy ( ) ;
522+
523+ // create new session after previous has expired
524+ jest . useFakeTimers ( ) ;
525+ jest . setSystemTime ( new Date ( dateNow . getTime ( ) + 86400000 ) ) ; // set to 24 hours from current date
526+
527+ // new session should have different sampling decision as previous session
528+ mockRandom ( [ 0.99 ] ) ;
529+ session = sessionManager . getSession ( ) ;
530+
531+ // Assert
532+ expect ( session . record ) . toBeFalsy ( ) ;
533+ expect ( sessionManager . isSampled ( ) ) . toBeFalsy ( ) ;
485534 } ) ;
486535
487536 test ( 'when random value equals sessionSampleRate then session.record is false' , async ( ) => {
0 commit comments