|
3 | 3 |
|
4 | 4 | package software.aws.toolkits.jetbrains.services.telemetry |
5 | 5 |
|
| 6 | +import com.intellij.openapi.Disposable |
6 | 7 | import com.intellij.openapi.application.ApplicationManager |
| 8 | +import com.intellij.openapi.util.Disposer |
7 | 9 | import com.intellij.testFramework.replaceService |
8 | 10 | import org.junit.jupiter.api.extension.AfterEachCallback |
9 | 11 | import org.junit.jupiter.api.extension.BeforeEachCallback |
@@ -37,17 +39,21 @@ class NoOpPublisher : TelemetryPublisher { |
37 | 39 | } |
38 | 40 |
|
39 | 41 | sealed class MockTelemetryServiceBase : ExternalResource() { |
40 | | - private val publisher: NoOpPublisher by lazy { NoOpTelemetryService.NO_OP_PUBLISHER } |
41 | | - private val batcher: TelemetryBatcher by lazy { spy(DefaultTelemetryBatcher(publisher)) } |
| 42 | + protected val publisher: NoOpPublisher by lazy { NoOpTelemetryService.NO_OP_PUBLISHER } |
| 43 | + protected val batcher: TelemetryBatcher by lazy { spy(DefaultTelemetryBatcher(publisher)) } |
| 44 | + private lateinit var disposableParent: Disposable |
42 | 45 |
|
43 | 46 | private val mockTelemetryService: NoOpTelemetryService by lazy { NoOpTelemetryService(publisher, batcher) } |
44 | 47 |
|
45 | 48 | override fun before() { |
46 | | - ApplicationManager.getApplication().replaceService(TelemetryService::class.java, mockTelemetryService, mockTelemetryService) |
| 49 | + // hack because @TestDisposable doesn't work here as it's not a test |
| 50 | + disposableParent = Disposer.newDisposable() |
| 51 | + ApplicationManager.getApplication().replaceService(TelemetryService::class.java, mockTelemetryService, disposableParent) |
47 | 52 | } |
48 | 53 |
|
49 | 54 | override fun after() { |
50 | 55 | reset(batcher()) |
| 56 | + Disposer.dispose(disposableParent) |
51 | 57 | } |
52 | 58 |
|
53 | 59 | fun telemetryService() = mockTelemetryService |
|
0 commit comments