@@ -18,7 +18,7 @@ jest.setTimeout(10000);
1818
1919describe ( "telemetry reporting" , ( ) => {
2020 let originalTelemetryExtension : boolean | undefined ;
21- let originalTelemetryGlobal : boolean | undefined ;
21+ let originalTelemetryGlobal : string | undefined ;
2222 let isCanary : string ;
2323 let ctx : ExtensionContext ;
2424 let telemetryListener : ExtensionTelemetryListener ;
@@ -48,7 +48,7 @@ describe("telemetry reporting", () => {
4848 try {
4949 // in case a previous test has accidentally activated this extension,
5050 // need to disable it first.
51- // Accidentaly activation may happen asynchronously due to activationEvents
51+ // Accidental activation may happen asynchronously due to activationEvents
5252 // specified in the package.json.
5353 globalTelemetryListener ?. dispose ( ) ;
5454
@@ -73,7 +73,7 @@ describe("telemetry reporting", () => {
7373 . get < boolean > ( "codeQL.telemetry.enableTelemetry" ) ;
7474 originalTelemetryGlobal = workspace
7575 . getConfiguration ( )
76- . get < boolean > ( "telemetry.enableTelemetry " ) ;
76+ . get < string > ( "telemetry.telemetryLevel " ) ;
7777 isCanary = ( ! ! workspace
7878 . getConfiguration ( )
7979 . get < boolean > ( "codeQL.canary" ) ) . toString ( ) ;
@@ -82,7 +82,7 @@ describe("telemetry reporting", () => {
8282 isTelemetryEnabledSpy = jest
8383 . spyOn ( env , "isTelemetryEnabled" , "get" )
8484 . mockReturnValue ( true ) ;
85- await enableTelemetry ( "telemetry" , true ) ;
85+ await setTelemetryLevel ( "telemetry" , "all" ) ;
8686 await enableTelemetry ( "codeQL.telemetry" , true ) ;
8787
8888 telemetryListener = new ExtensionTelemetryListener (
@@ -101,27 +101,26 @@ describe("telemetry reporting", () => {
101101 telemetryListener ?. dispose ( ) ;
102102 // await wait(100);
103103 try {
104- await enableTelemetry ( "telemetry" , originalTelemetryGlobal ) ;
104+ await setTelemetryLevel ( "telemetry" , originalTelemetryGlobal ) ;
105105 await enableTelemetry ( "codeQL.telemetry" , originalTelemetryExtension ) ;
106106 } catch ( e ) {
107107 console . error ( e ) ;
108108 }
109109 } ) ;
110110
111- it ( "should initialize telemetry when both options are enabled" , async ( ) => {
111+ it ( "should initialize telemetry when 'codeQL.telemetry.enableTelemetry' is enabled and global 'telemetry.telemetryLevel' is 'all' " , async ( ) => {
112112 await telemetryListener . initialize ( ) ;
113113
114114 expect ( telemetryListener . _reporter ) . toBeDefined ( ) ;
115-
116115 const reporter : any = telemetryListener . _reporter ;
117116 expect ( reporter . extensionId ) . toBe ( "my-id" ) ;
118117 expect ( reporter . extensionVersion ) . toBe ( "1.2.3" ) ;
119118 expect ( reporter . userOptIn ) . toBe ( true ) ; // enabled
120119 } ) ;
121120
122- it ( "should initialize telemetry when global option disabled " , async ( ) => {
121+ it ( "should initialize telemetry when global 'telemetry.telemetryLevel' is 'off' " , async ( ) => {
123122 isTelemetryEnabledSpy . mockReturnValue ( false ) ;
124- await enableTelemetry ( "telemetry" , false ) ;
123+ await setTelemetryLevel ( "telemetry" , "off" ) ;
125124 await telemetryListener . initialize ( ) ;
126125 expect ( telemetryListener . _reporter ) . toBeDefined ( ) ;
127126
@@ -139,7 +138,7 @@ describe("telemetry reporting", () => {
139138 it ( "should not initialize telemetry when both options disabled" , async ( ) => {
140139 await enableTelemetry ( "codeQL.telemetry" , false ) ;
141140 isTelemetryEnabledSpy . mockReturnValue ( false ) ;
142- await enableTelemetry ( "telemetry" , false ) ;
141+ await setTelemetryLevel ( "telemetry" , "off" ) ;
143142 await telemetryListener . initialize ( ) ;
144143 expect ( telemetryListener . _reporter ) . toBeUndefined ( ) ;
145144 } ) ;
@@ -179,14 +178,14 @@ describe("telemetry reporting", () => {
179178 expect ( disposeSpy ) . toHaveBeenCalledTimes ( 1 ) ;
180179 } ) ;
181180
182- it ( "should set userOprIn to false when global setting changes" , async ( ) => {
181+ it ( "should set userOptIn to false when global setting changes" , async ( ) => {
183182 await telemetryListener . initialize ( ) ;
184183
185184 const reporter : any = telemetryListener . _reporter ;
186185 expect ( reporter . userOptIn ) . toBe ( true ) ; // enabled
187186
188187 isTelemetryEnabledSpy . mockReturnValue ( false ) ;
189- await enableTelemetry ( "telemetry" , false ) ;
188+ await setTelemetryLevel ( "telemetry" , "off" ) ;
190189 expect ( reporter . userOptIn ) . toBe ( false ) ; // disabled
191190 } ) ;
192191
@@ -420,7 +419,7 @@ describe("telemetry reporting", () => {
420419 // show the dialog.
421420
422421 isTelemetryEnabledSpy . mockReturnValue ( false ) ;
423- await enableTelemetry ( "telemetry" , false ) ;
422+ await setTelemetryLevel ( "telemetry" , "off" ) ;
424423 await ctx . globalState . update ( "telemetry-request-viewed" , false ) ;
425424
426425 await telemetryListener . initialize ( ) ;
@@ -431,7 +430,7 @@ describe("telemetry reporting", () => {
431430
432431 // This test is failing because codeQL.canary is not a registered configuration.
433432 // We do not want to have it registered because we don't want this item
434- // appearing in the settings page. It needs to olny be set by users we tell
433+ // appearing in the settings page. It needs to only be set by users we tell
435434 // about it to.
436435 // At this point, I see no other way of testing re-requesting permission.
437436 xit ( "should request permission again when user changes canary setting" , async ( ) => {
@@ -574,6 +573,16 @@ describe("telemetry reporting", () => {
574573 await wait ( 100 ) ;
575574 }
576575
576+ async function setTelemetryLevel ( section : string , value : string | undefined ) {
577+ await workspace
578+ . getConfiguration ( section )
579+ . update ( "telemetryLevel" , value , ConfigurationTarget . Global ) ;
580+
581+ // Need to wait some time since the onDidChangeConfiguration listeners fire
582+ // asynchronously. Must ensure they to complete in order to have a successful test.
583+ await wait ( 100 ) ;
584+ }
585+
577586 async function wait ( ms = 0 ) {
578587 return new Promise ( ( resolve ) => setTimeout ( resolve , ms ) ) ;
579588 }
0 commit comments