33
44package software.aws.toolkits.jetbrains.services.telemetry
55
6- import com.intellij.openapi.components.service
6+ import com.intellij.openapi.application.ApplicationManager
7+ import com.intellij.testFramework.replaceService
78import org.junit.jupiter.api.extension.AfterEachCallback
89import org.junit.jupiter.api.extension.BeforeEachCallback
910import org.junit.jupiter.api.extension.ExtensionContext
@@ -13,14 +14,11 @@ import org.mockito.kotlin.spy
1314import software.amazon.awssdk.services.toolkittelemetry.model.Sentiment
1415import software.aws.toolkits.core.telemetry.DefaultTelemetryBatcher
1516import software.aws.toolkits.core.telemetry.MetricEvent
17+ import software.aws.toolkits.core.telemetry.TelemetryBatcher
1618import software.aws.toolkits.core.telemetry.TelemetryPublisher
1719
18- class NoOpTelemetryService : TelemetryService (publisher, spy( DefaultTelemetryBatcher (publisher)) ) {
20+ class NoOpTelemetryService ( noOpPublisher : NoOpPublisher , batcher : TelemetryBatcher ) : TelemetryService(noOpPublisher, batcher ) {
1921 fun batcher () = super .batcher
20-
21- private companion object {
22- private val publisher: TelemetryPublisher by lazy { NoOpPublisher () }
23- }
2422}
2523
2624class NoOpPublisher : TelemetryPublisher {
@@ -32,8 +30,14 @@ class NoOpPublisher : TelemetryPublisher {
3230}
3331
3432sealed class MockTelemetryServiceBase : ExternalResource () {
35- private val mockTelemetryService: NoOpTelemetryService
36- get() = service<TelemetryService >() as NoOpTelemetryService
33+ private val publisher: NoOpPublisher by lazy { NoOpPublisher () }
34+ private val batcher: TelemetryBatcher by lazy { spy(DefaultTelemetryBatcher (publisher)) }
35+
36+ private val mockTelemetryService: NoOpTelemetryService by lazy { NoOpTelemetryService (publisher, batcher) }
37+
38+ override fun before () {
39+ ApplicationManager .getApplication().replaceService(TelemetryService ::class .java, mockTelemetryService, mockTelemetryService)
40+ }
3741
3842 override fun after () {
3943 reset(batcher())
0 commit comments