@@ -16,6 +16,7 @@ import org.mockito.kotlin.verify
16
16
import org.mockito.kotlin.verifyNoInteractions
17
17
import software.aws.toolkits.core.rules.SystemPropertyHelper
18
18
import software.aws.toolkits.core.utils.test.aString
19
+ import software.aws.toolkits.jetbrains.core.experiments.ToolkitExperimentManager.Companion.EXPERIMENT_CHANGED
19
20
import software.aws.toolkits.jetbrains.utils.deserializeState
20
21
import software.aws.toolkits.jetbrains.utils.rules.RegistryRule
21
22
import software.aws.toolkits.jetbrains.utils.serializeState
@@ -188,17 +189,14 @@ class ToolkitExperimentManagerTest {
188
189
val anExperiment = DummyExperiment ()
189
190
assertThat(anExperiment.isEnabled()).isFalse
190
191
val mockListener: ToolkitExperimentStateChangedListener = mock()
191
- val conn = ApplicationManager .getApplication().messageBus.connect()
192
- conn.subscribe(ToolkitExperimentManager .EXPERIMENT_CHANGED , mockListener)
192
+ subscribeToTopic(mockListener)
193
193
anExperiment.setState(true )
194
194
195
195
argumentCaptor<ToolkitExperiment >().apply {
196
196
verify(mockListener).enableSettingsStateChanged(capture())
197
197
assertThat(allValues).hasSize(1 )
198
198
assertThat(firstValue.id).isEqualTo(anExperiment.id)
199
199
}
200
-
201
- conn.dispose()
202
200
}
203
201
204
202
@Test
@@ -207,17 +205,22 @@ class ToolkitExperimentManagerTest {
207
205
ExtensionTestUtil .maskExtensions(ToolkitExperimentManager .EP_NAME , listOf (experiment), disposableRule.disposable)
208
206
assertThat(experiment.isEnabled()).isTrue
209
207
val mockListener: ToolkitExperimentStateChangedListener = mock()
210
- val conn = ApplicationManager .getApplication().messageBus.connect()
211
- conn.subscribe(ToolkitExperimentManager .EXPERIMENT_CHANGED , mockListener)
208
+ subscribeToTopic(mockListener)
212
209
experiment.setState(false )
213
210
214
211
argumentCaptor<ToolkitExperiment >().apply {
215
212
verify(mockListener).enableSettingsStateChanged(capture())
216
213
assertThat(allValues).hasSize(1 )
217
214
assertThat(firstValue.id).isEqualTo(experiment.id)
218
215
}
216
+ }
219
217
220
- conn.dispose()
218
+ @Test
219
+ fun `updated experiment state is reflected when event is consumed` () {
220
+ val anExperiment = DummyExperiment ()
221
+ ExtensionTestUtil .maskExtensions(ToolkitExperimentManager .EP_NAME , listOf (anExperiment), disposableRule.disposable)
222
+ subscribeToTopic { toolkitExperiment -> assertThat(toolkitExperiment.isEnabled()).isTrue }
223
+ anExperiment.setState(true )
221
224
}
222
225
223
226
@Test
@@ -226,13 +229,11 @@ class ToolkitExperimentManagerTest {
226
229
ExtensionTestUtil .maskExtensions(ToolkitExperimentManager .EP_NAME , listOf (experiment), disposableRule.disposable)
227
230
assertThat(experiment.isEnabled()).isTrue
228
231
val mockListener: ToolkitExperimentStateChangedListener = mock()
229
- val conn = ApplicationManager .getApplication().messageBus.connect()
230
- conn.subscribe(ToolkitExperimentManager .EXPERIMENT_CHANGED , mockListener)
232
+ subscribeToTopic(mockListener)
231
233
232
234
experiment.setState(true )
233
- verifyNoInteractions(mockListener)
234
235
235
- conn.dispose( )
236
+ verifyNoInteractions(mockListener )
236
237
}
237
238
238
239
@Test
@@ -241,13 +242,10 @@ class ToolkitExperimentManagerTest {
241
242
ExtensionTestUtil .maskExtensions(ToolkitExperimentManager .EP_NAME , listOf (experiment), disposableRule.disposable)
242
243
assertThat(experiment.isEnabled()).isFalse
243
244
val mockListener: ToolkitExperimentStateChangedListener = mock()
244
- val conn = ApplicationManager .getApplication().messageBus.connect()
245
- conn.subscribe(ToolkitExperimentManager .EXPERIMENT_CHANGED , mockListener)
245
+ subscribeToTopic(mockListener)
246
246
247
247
experiment.setState(false )
248
248
verifyNoInteractions(mockListener)
249
-
250
- conn.dispose()
251
249
}
252
250
253
251
@Test
@@ -295,6 +293,11 @@ class ToolkitExperimentManagerTest {
295
293
sut.neverPrompt(experiment)
296
294
assertThat(sut.shouldPrompt(experiment, now.plusMillis(2 ))).isFalse
297
295
}
296
+
297
+ private fun subscribeToTopic (listener : ToolkitExperimentStateChangedListener ) {
298
+ val conn = ApplicationManager .getApplication().messageBus.connect(disposableRule.disposable)
299
+ conn.subscribe(EXPERIMENT_CHANGED , listener)
300
+ }
298
301
}
299
302
300
303
class DummyExperiment (
0 commit comments