@@ -275,4 +275,67 @@ describe('Activity tracker behaviour', () => {
275275 expect ( firstPageId ) . toBe ( extractPageId ( pph ) ) ;
276276 expect ( secondPageId ) . toBe ( extractPageId ( ppl ) ) ;
277277 } ) ;
278+
279+ it ( 'disables activity tracking' , ( ) => {
280+ const state = new SharedState ( ) ;
281+ const t =
282+ addTracker ( 'sp6' , 'sp6' , '' , '' , state , { stateStorageStrategy : 'cookie' } ) ?? fail ( 'Failed to create tracker' ) ;
283+ t . enableActivityTracking ( { minimumVisitLength : 5 , heartbeatDelay : 5 } ) ;
284+ t . trackPageView ( ) ;
285+
286+ jest . advanceTimersByTime ( 100 ) ;
287+ t . updatePageActivity ( ) ;
288+ jest . advanceTimersByTime ( 4900 ) ;
289+
290+ expect ( F . size ( getPPEvents ( state . outQueues ) ) ) . toBe ( 1 ) ;
291+
292+ // page ping timer starts tracking
293+ jest . advanceTimersByTime ( 100 ) ;
294+ t . updatePageActivity ( ) ;
295+ jest . advanceTimersByTime ( 4900 ) ;
296+
297+ expect ( F . size ( getPPEvents ( state . outQueues ) ) ) . toBe ( 2 ) ;
298+
299+ /* Disabling activity tracking and callback is expected to not allow more activity actions */
300+ t . disableActivityTracking ( ) ;
301+ t . disableActivityTrackingCallback ( ) ;
302+
303+ jest . advanceTimersByTime ( 100 ) ;
304+ t . updatePageActivity ( ) ;
305+ jest . advanceTimersByTime ( 4900 ) ;
306+
307+ expect ( F . size ( getPPEvents ( state . outQueues ) ) ) . toBe ( 2 ) ;
308+ } ) ;
309+
310+ it ( 'disables activity tracking callback' , ( ) => {
311+ let callbacks = 0 ;
312+ const state = new SharedState ( ) ;
313+ const t =
314+ addTracker ( 'sp7' , 'sp7' , '' , '' , state , { stateStorageStrategy : 'cookie' } ) ?? fail ( 'Failed to create tracker' ) ;
315+ t . enableActivityTrackingCallback ( { minimumVisitLength : 5 , heartbeatDelay : 5 , callback : ( ) => callbacks ++ } ) ;
316+ t . trackPageView ( ) ;
317+
318+ jest . advanceTimersByTime ( 100 ) ;
319+ t . updatePageActivity ( ) ;
320+ jest . advanceTimersByTime ( 4900 ) ;
321+
322+ expect ( callbacks ) . toBe ( 1 ) ;
323+
324+ // page ping timer starts tracking
325+ jest . advanceTimersByTime ( 100 ) ;
326+ t . updatePageActivity ( ) ;
327+ jest . advanceTimersByTime ( 4900 ) ;
328+
329+ expect ( callbacks ) . toBe ( 2 ) ;
330+
331+ /* Disabling activity tracking and callback is expected to not allow more activity actions */
332+ t . disableActivityTracking ( ) ;
333+ t . disableActivityTrackingCallback ( ) ;
334+
335+ jest . advanceTimersByTime ( 100 ) ;
336+ t . updatePageActivity ( ) ;
337+ jest . advanceTimersByTime ( 4900 ) ;
338+
339+ expect ( callbacks ) . toBe ( 2 ) ;
340+ } ) ;
278341} ) ;
0 commit comments