11import ForegroundTimeTracker from '../../src/foregroundTimeTracker' ;
2+ import Store , { IStore } from '../../src/store' ;
3+ import { SDKInitConfig } from '../../src/sdkRuntimeModels' ;
4+ import { IMParticleWebSDKInstance } from '../../src/mp-instance' ;
25
36describe ( 'ForegroundTimeTracker' , ( ) => {
47 let foregroundTimeTracker : ForegroundTimeTracker ;
@@ -490,4 +493,69 @@ describe('ForegroundTimeTracker', () => {
490493 expect ( updatePersistenceSpy ) . toHaveBeenCalled ( ) ;
491494 } ) ;
492495 } ) ;
496+
497+ describe ( '#noTargeting' , ( ) => {
498+ const workspaceToken = 'abcdef' ;
499+ const tosKey = `mprtcl-tos-${ workspaceToken } ` ;
500+ let mockMPInstance : IMParticleWebSDKInstance ;
501+ let store : IStore ;
502+
503+ beforeEach ( ( ) => {
504+ jest . useFakeTimers ( { now : Date . now ( ) , advanceTimers : true } ) ;
505+ localStorage . clear ( ) ;
506+
507+ mockMPInstance = {
508+ _Helpers : {
509+ createMainStorageName : ( ) => `mprtcl-v4_${ workspaceToken } ` ,
510+ createProductStorageName : ( ) => `mprtcl-prodv4_${ workspaceToken } ` ,
511+ Validators : { isFunction : ( ) => true } ,
512+ extend : Object . assign ,
513+ } ,
514+ _NativeSdkHelpers : { isWebviewEnabled : ( ) => false } ,
515+ _Persistence : {
516+ update : jest . fn ( ) ,
517+ savePersistence : jest . fn ( ) ,
518+ getPersistence : ( ) => ( { gs : { } } ) ,
519+ } ,
520+ Logger : { verbose : jest . fn ( ) , warning : jest . fn ( ) , error : jest . fn ( ) } ,
521+ Identity : { getCurrentUser : ( ) => ( { getMPID : ( ) => 'mpid' } ) } ,
522+ _timeOnSiteTimer : undefined as any ,
523+ } as unknown as IMParticleWebSDKInstance ;
524+
525+ store = { } as IStore ;
526+ ( Store as any ) . call ( store , { } as SDKInitConfig , mockMPInstance , 'apikey' ) ;
527+ mockMPInstance . _Store = store ;
528+ } ) ;
529+
530+ afterEach ( ( ) => {
531+ jest . useRealTimers ( ) ;
532+ localStorage . clear ( ) ;
533+ } ) ;
534+
535+ it ( 'should initialize timer when noTargeting is default (false)' , ( ) => {
536+ store . processConfig ( { workspaceToken } as SDKInitConfig ) ;
537+ expect ( mockMPInstance . _timeOnSiteTimer ) . toBeDefined ( ) ;
538+ if ( mockMPInstance . _timeOnSiteTimer ) {
539+ jest . advanceTimersByTime ( 1000 ) ;
540+ mockMPInstance . _timeOnSiteTimer . getTimeInForeground ( ) ;
541+ }
542+ expect ( localStorage . getItem ( tosKey ) ) . not . toBeNull ( ) ;
543+ } ) ;
544+
545+ it ( 'should NOT initialize timer when noTargeting is true' , ( ) => {
546+ store . processConfig ( { workspaceToken, noTargeting : true } as SDKInitConfig ) ;
547+ expect ( mockMPInstance . _timeOnSiteTimer ) . toBeUndefined ( ) ;
548+ expect ( localStorage . getItem ( tosKey ) ) . toBeNull ( ) ;
549+ } ) ;
550+
551+ it ( 'should initialize timer when noTargeting is false' , ( ) => {
552+ store . processConfig ( { workspaceToken, noTargeting : false } as SDKInitConfig ) ;
553+ expect ( mockMPInstance . _timeOnSiteTimer ) . toBeDefined ( ) ;
554+ if ( mockMPInstance . _timeOnSiteTimer ) {
555+ jest . advanceTimersByTime ( 1000 ) ;
556+ mockMPInstance . _timeOnSiteTimer . getTimeInForeground ( ) ;
557+ }
558+ expect ( localStorage . getItem ( tosKey ) ) . not . toBeNull ( ) ;
559+ } ) ;
560+ } ) ;
493561} ) ;
0 commit comments