Skip to content

Commit de79472

Browse files
authored
fix: test isolation and timing flakiness (#305)
1 parent 3ee672c commit de79472

1 file changed

Lines changed: 17 additions & 10 deletions

File tree

core/src/test/kotlin/com/segment/analytics/kotlin/core/WaitingTests.kt

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import com.segment.analytics.kotlin.core.utils.testAnalytics
99
import io.mockk.coEvery
1010
import io.mockk.coVerify
1111
import io.mockk.mockkStatic
12+
import io.mockk.unmockkStatic
1213
import kotlinx.coroutines.Job
1314
import kotlinx.coroutines.delay
1415
import kotlinx.coroutines.launch
@@ -65,15 +66,19 @@ class WaitingTests {
6566
@Test
6667
fun `test pause does not dispatch state if already pause`() {
6768
mockkStatic("com.segment.analytics.kotlin.core.WaitingKt")
68-
coEvery { analytics.startProcessingAfterTimeout(any()) } returns Job()
69-
70-
testScope.runTest {
71-
analytics.pauseEventProcessing()
72-
analytics.pauseEventProcessing()
73-
analytics.pauseEventProcessing()
74-
coVerify(exactly = 1) {
75-
analytics.startProcessingAfterTimeout(any())
69+
try {
70+
coEvery { analytics.startProcessingAfterTimeout(any()) } returns Job()
71+
72+
testScope.runTest {
73+
analytics.pauseEventProcessing()
74+
analytics.pauseEventProcessing()
75+
analytics.pauseEventProcessing()
76+
coVerify(exactly = 1) {
77+
analytics.startProcessingAfterTimeout(any())
78+
}
7679
}
80+
} finally {
81+
unmockkStatic("com.segment.analytics.kotlin.core.WaitingKt")
7782
}
7883
}
7984

@@ -147,12 +152,13 @@ class WaitingTests {
147152
analytics.add(destinationPlugin)
148153
destinationPlugin.add(waitingPlugin)
149154
analytics.track("foo")
155+
testScheduler.runCurrent()
150156

151157
assertFalse(analytics.running())
152158
assertFalse(waitingPlugin.tracked)
153159

154-
advanceUntilIdle()
155160
advanceTimeBy(6000)
161+
testScheduler.runCurrent()
156162

157163
assertTrue(analytics.running())
158164
assertTrue(waitingPlugin.tracked)
@@ -166,12 +172,13 @@ class WaitingTests {
166172
analytics.add(destinationPlugin)
167173
destinationPlugin.add(waitingPlugin)
168174
analytics.track("foo")
175+
testScheduler.runCurrent()
169176

170177
assertFalse(analytics.running())
171178
assertFalse(waitingPlugin.tracked)
172179

173-
advanceUntilIdle()
174180
advanceTimeBy(6000)
181+
testScheduler.runCurrent()
175182

176183
assertTrue(analytics.running())
177184
assertTrue(waitingPlugin.tracked)

0 commit comments

Comments
 (0)