22// Licensed under the MIT License.
33import { BaseActionPayload } from 'background/actions/action-payloads' ;
44import { TelemetryEventHandler } from 'background/telemetry/telemetry-event-handler' ;
5+ import {
6+ BaseTelemetryData ,
7+ TelemetryEventSource ,
8+ TriggeredByNotApplicable ,
9+ } from 'common/extension-telemetry-events' ;
510import { Action } from 'common/flux/action' ;
611import { Logger } from 'common/logging/logger' ;
12+ import { SupportedMouseEvent , TelemetryDataFactory } from 'common/telemetry-data-factory' ;
713import {
814 DEVICE_FOCUS_DISABLE ,
915 DEVICE_FOCUS_ENABLE ,
@@ -28,6 +34,9 @@ describe('TabStopsActionCreator', () => {
2834 let loggerMock : IMock < Logger > ;
2935 let statusDisconnectedMock : IMock < Action < void > > ;
3036 let statusConnectedMock : IMock < Action < void > > ;
37+ let telemetryDataFactoryMock : IMock < TelemetryDataFactory > ;
38+ let eventStub : React . SyntheticEvent ;
39+ let telemetryStub : BaseTelemetryData ;
3140
3241 beforeEach ( ( ) => {
3342 tabStopsActionsMock = Mock . ofType < TabStopsActions > ( ) ;
@@ -47,13 +56,20 @@ describe('TabStopsActionCreator', () => {
4756 loggerMock = Mock . ofType < Logger > ( undefined , MockBehavior . Strict ) ;
4857 statusDisconnectedMock = Mock . ofType < Action < void > > ( ) ;
4958 statusConnectedMock = Mock . ofType < Action < void > > ( ) ;
59+ telemetryDataFactoryMock = Mock . ofType < TelemetryDataFactory > ( ) ;
60+ eventStub = { } as React . SyntheticEvent ;
61+ telemetryStub = {
62+ source : TelemetryEventSource . ElectronResultsView ,
63+ triggeredBy : 'N/A' ,
64+ } ;
5065
5166 testSubject = new TabStopsActionCreator (
5267 tabStopsActionsMock . object ,
5368 deviceConnectionActionsMock . object ,
5469 deviceFocusControllerMock . object ,
5570 loggerMock . object ,
5671 telemetryEventHandlerMock . object ,
72+ telemetryDataFactoryMock . object ,
5773 ) ;
5874 } ) ;
5975
@@ -62,11 +78,12 @@ describe('TabStopsActionCreator', () => {
6278 deviceFocusControllerMock
6379 . setup ( m => m . enableFocusTracking ( ) )
6480 . returns ( ( ) => Promise . resolve ( ) ) ;
65- setupTelemetryMock ( DEVICE_FOCUS_ENABLE , { } ) ;
81+ setupTelemetryMock ( DEVICE_FOCUS_ENABLE , { telemetry : telemetryStub } ) ;
82+ setupTelemetryDataFactoryMock ( eventStub ) ;
6683 tabStopsActionsMock . setup ( m => m . enableFocusTracking ) . returns ( ( ) => actionMock . object ) ;
6784 setFocusActionsForSuccess ( ) ;
6885
69- await testSubject . enableTabStops ( ) ;
86+ await testSubject . enableTabStops ( eventStub ) ;
7087
7188 actionMock . verify ( m => m . invoke ( ) , Times . once ( ) ) ;
7289 verifyAllMocks ( ) ;
@@ -76,11 +93,12 @@ describe('TabStopsActionCreator', () => {
7693 deviceFocusControllerMock
7794 . setup ( m => m . disableFocusTracking ( ) )
7895 . returns ( ( ) => Promise . resolve ( ) ) ;
79- setupTelemetryMock ( DEVICE_FOCUS_DISABLE , { } ) ;
96+ setupTelemetryMock ( DEVICE_FOCUS_DISABLE , { telemetry : telemetryStub } ) ;
97+ setupTelemetryDataFactoryMock ( eventStub ) ;
8098 tabStopsActionsMock . setup ( m => m . disableFocusTracking ) . returns ( ( ) => actionMock . object ) ;
8199 setFocusActionsForSuccess ( ) ;
82100
83- await testSubject . disableTabStops ( ) ;
101+ await testSubject . disableTabStops ( eventStub ) ;
84102
85103 actionMock . verify ( m => m . invoke ( ) , Times . once ( ) ) ;
86104 verifyAllMocks ( ) ;
@@ -90,11 +108,12 @@ describe('TabStopsActionCreator', () => {
90108 deviceFocusControllerMock
91109 . setup ( m => m . resetFocusTracking ( ) )
92110 . returns ( ( ) => Promise . resolve ( ) ) ;
93- setupTelemetryMock ( DEVICE_FOCUS_RESET , { } ) ;
111+ setupTelemetryMock ( DEVICE_FOCUS_RESET , { telemetry : telemetryStub } ) ;
112+ setupTelemetryDataFactoryMock ( eventStub ) ;
94113 tabStopsActionsMock . setup ( m => m . startOver ) . returns ( ( ) => actionMock . object ) ;
95114 setFocusActionsForSuccess ( ) ;
96115
97- await testSubject . startOver ( ) ;
116+ await testSubject . startOver ( eventStub ) ;
98117
99118 actionMock . verify ( m => m . invoke ( ) , Times . once ( ) ) ;
100119 verifyAllMocks ( ) ;
@@ -159,7 +178,7 @@ describe('TabStopsActionCreator', () => {
159178 . setup ( m => m . sendKeyEvent ( keyEventCode ) )
160179 . returns ( ( ) => Promise . resolve ( ) ) ;
161180
162- await testSubject [ funcName ] ( ) ;
181+ await testSubject [ funcName ] ( eventStub ) ;
163182
164183 verifyAllMocks ( ) ;
165184 }
@@ -173,11 +192,12 @@ describe('TabStopsActionCreator', () => {
173192 . setup ( m => m . enableFocusTracking ( ) )
174193 . returns ( ( ) => Promise . reject ( errorMessage ) ) ;
175194
176- setupTelemetryMock ( DEVICE_FOCUS_ENABLE , { } ) ;
195+ setupTelemetryMock ( DEVICE_FOCUS_ENABLE , { telemetry : telemetryStub } ) ;
196+ setupTelemetryDataFactoryMock ( eventStub ) ;
177197 tabStopsActionsMock . setup ( m => m . enableFocusTracking ) . returns ( ( ) => actionMock . object ) ;
178198 setMocksForFocusError ( ) ;
179199
180- await testSubject . enableTabStops ( ) ;
200+ await testSubject . enableTabStops ( eventStub ) ;
181201
182202 actionMock . verify ( m => m . invoke ( ) , Times . never ( ) ) ;
183203 verifyAllMocks ( ) ;
@@ -188,11 +208,12 @@ describe('TabStopsActionCreator', () => {
188208 . setup ( m => m . disableFocusTracking ( ) )
189209 . returns ( ( ) => Promise . reject ( errorMessage ) ) ;
190210
191- setupTelemetryMock ( DEVICE_FOCUS_DISABLE , { } ) ;
211+ setupTelemetryMock ( DEVICE_FOCUS_DISABLE , { telemetry : telemetryStub } ) ;
212+ setupTelemetryDataFactoryMock ( eventStub ) ;
192213 tabStopsActionsMock . setup ( m => m . disableFocusTracking ) . returns ( ( ) => actionMock . object ) ;
193214 setMocksForFocusError ( ) ;
194215
195- await testSubject . disableTabStops ( ) ;
216+ await testSubject . disableTabStops ( eventStub ) ;
196217
197218 actionMock . verify ( m => m . invoke ( ) , Times . never ( ) ) ;
198219 verifyAllMocks ( ) ;
@@ -203,11 +224,12 @@ describe('TabStopsActionCreator', () => {
203224 . setup ( m => m . resetFocusTracking ( ) )
204225 . returns ( ( ) => Promise . reject ( errorMessage ) ) ;
205226
206- setupTelemetryMock ( DEVICE_FOCUS_RESET , { } ) ;
227+ setupTelemetryMock ( DEVICE_FOCUS_RESET , { telemetry : telemetryStub } ) ;
228+ setupTelemetryDataFactoryMock ( eventStub ) ;
207229 tabStopsActionsMock . setup ( m => m . startOver ) . returns ( ( ) => actionMock . object ) ;
208230 setMocksForFocusError ( ) ;
209231
210- await testSubject . startOver ( ) ;
232+ await testSubject . startOver ( eventStub ) ;
211233
212234 actionMock . verify ( m => m . invoke ( ) , Times . never ( ) ) ;
213235 verifyAllMocks ( ) ;
@@ -267,14 +289,21 @@ describe('TabStopsActionCreator', () => {
267289 . setup ( m => m . sendKeyEvent ( keyEventCode ) )
268290 . returns ( ( ) => Promise . reject ( errorMessage ) ) ;
269291
270- await testSubject [ funcName ] ( ) ;
292+ await testSubject [ funcName ] ( eventStub ) ;
271293
272294 verifyAllMocks ( ) ;
273295 }
274296
275297 function setMocksForFocusError ( ) : void {
276298 telemetryEventHandlerMock
277- . setup ( m => m . publishTelemetry ( DEVICE_FOCUS_ERROR , { } ) )
299+ . setup ( m =>
300+ m . publishTelemetry ( DEVICE_FOCUS_ERROR , {
301+ telemetry : {
302+ source : TelemetryEventSource . ElectronResultsView ,
303+ triggeredBy : TriggeredByNotApplicable ,
304+ } ,
305+ } ) ,
306+ )
278307 . verifiable ( Times . once ( ) ) ;
279308 loggerMock
280309 . setup ( m => m . log ( 'focus controller failure: ' + errorMessage ) )
@@ -295,6 +324,12 @@ describe('TabStopsActionCreator', () => {
295324 . verifiable ( Times . once ( ) ) ;
296325 }
297326
327+ function setupTelemetryDataFactoryMock ( event : SupportedMouseEvent ) : void {
328+ telemetryDataFactoryMock
329+ . setup ( m => m . withTriggeredByAndSource ( event , TelemetryEventSource . ElectronResultsView ) )
330+ . returns ( ( ) => telemetryStub ) ;
331+ }
332+
298333 function verifyAllMocks ( ) : void {
299334 telemetryEventHandlerMock . verifyAll ( ) ;
300335 deviceConnectionActionsMock . verifyAll ( ) ;
0 commit comments