@@ -5,10 +5,14 @@ package software.aws.toolkits.jetbrains.services.telemetry
5
5
6
6
import com.intellij.ide.highlighter.ProjectFileType
7
7
import com.intellij.openapi.project.ex.ProjectManagerEx
8
+ import com.intellij.testFramework.DisposableRule
9
+ import com.intellij.testFramework.ExtensionTestUtil
8
10
import com.intellij.testFramework.PlatformTestUtil
9
11
import com.intellij.testFramework.ProjectRule
10
12
import com.intellij.testFramework.TemporaryDirectory
11
13
import com.intellij.testFramework.createTestOpenProjectOptions
14
+ import kotlinx.coroutines.ExperimentalCoroutinesApi
15
+ import kotlinx.coroutines.test.runBlockingTest
12
16
import org.assertj.core.api.Assertions.assertThat
13
17
import org.junit.After
14
18
import org.junit.Rule
@@ -19,23 +23,29 @@ import org.mockito.kotlin.mock
19
23
import org.mockito.kotlin.stub
20
24
import org.mockito.kotlin.times
21
25
import org.mockito.kotlin.verify
26
+ import software.amazon.awssdk.services.toolkittelemetry.model.Sentiment
22
27
import software.aws.toolkits.core.credentials.CredentialIdentifier
23
28
import software.aws.toolkits.core.region.AwsRegion
24
29
import software.aws.toolkits.core.telemetry.DefaultMetricEvent.Companion.METADATA_INVALID
25
30
import software.aws.toolkits.core.telemetry.DefaultMetricEvent.Companion.METADATA_NOT_SET
26
31
import software.aws.toolkits.core.telemetry.MetricEvent
27
32
import software.aws.toolkits.core.telemetry.TelemetryBatcher
28
33
import software.aws.toolkits.core.telemetry.TelemetryPublisher
34
+ import software.aws.toolkits.core.utils.test.aString
29
35
import software.aws.toolkits.jetbrains.core.MockResourceCacheRule
30
36
import software.aws.toolkits.jetbrains.core.credentials.AwsConnectionManager
31
37
import software.aws.toolkits.jetbrains.core.credentials.ConnectionState
32
38
import software.aws.toolkits.jetbrains.core.credentials.MockAwsConnectionManager
33
39
import software.aws.toolkits.jetbrains.core.credentials.MockAwsConnectionManager.ProjectAccountSettingsManagerRule
34
40
import software.aws.toolkits.jetbrains.core.credentials.MockCredentialManagerRule
35
41
import software.aws.toolkits.jetbrains.core.credentials.waitUntilConnectionStateIsStable
42
+ import software.aws.toolkits.jetbrains.core.experiments.DummyExperiment
43
+ import software.aws.toolkits.jetbrains.core.experiments.ToolkitExperimentManager
44
+ import software.aws.toolkits.jetbrains.core.experiments.setState
36
45
import software.aws.toolkits.jetbrains.core.region.MockRegionProviderRule
37
46
import software.aws.toolkits.jetbrains.services.sts.StsResources
38
47
import software.aws.toolkits.jetbrains.settings.AwsSettings
48
+ import software.aws.toolkits.jetbrains.ui.feedback.ENABLED_EXPERIMENTS
39
49
import java.util.concurrent.CountDownLatch
40
50
import java.util.concurrent.TimeUnit
41
51
@@ -62,6 +72,10 @@ class TelemetryServiceTest {
62
72
@Rule
63
73
val connectionSettingsManager = ProjectAccountSettingsManagerRule (projectRule)
64
74
75
+ @JvmField
76
+ @Rule
77
+ val disposableRule = DisposableRule ()
78
+
65
79
@After
66
80
fun tearDown () {
67
81
AwsSettings .getInstance().isTelemetryEnabled = false
@@ -243,6 +257,28 @@ class TelemetryServiceTest {
243
257
}
244
258
}
245
259
260
+ @Test
261
+ @ExperimentalCoroutinesApi
262
+ fun experimentStatusIsIncludedInFeedback () = runBlockingTest {
263
+ val fooExperiment = DummyExperiment ()
264
+ val barExperiment = DummyExperiment ()
265
+ val bloopExperiment = DummyExperiment ()
266
+ ExtensionTestUtil .maskExtensions(ToolkitExperimentManager .EP_NAME , listOf (fooExperiment, barExperiment, bloopExperiment), disposableRule.disposable)
267
+
268
+ fooExperiment.setState(true )
269
+ barExperiment.setState(true )
270
+
271
+ val publisher = mock<TelemetryPublisher >()
272
+ val telemetryService = TestTelemetryService (publisher = publisher, batcher = mock())
273
+
274
+ val comment = aString()
275
+
276
+ telemetryService.sendFeedback(Sentiment .NEGATIVE , comment)
277
+ telemetryService.dispose()
278
+
279
+ verify(publisher).sendFeedback(Sentiment .NEGATIVE , comment, mapOf (ENABLED_EXPERIMENTS to " ${fooExperiment.id} ,${barExperiment.id} " ))
280
+ }
281
+
246
282
@Test
247
283
fun disposeClosesThePublisher () {
248
284
val mockPublisher = mock<TelemetryPublisher >()
0 commit comments