Skip to content

Commit c739d14

Browse files
committed
fix: flaky tests randomly fail due to enqueuing operation in background
1 parent f7f82ed commit c739d14

File tree

2 files changed

+8
-0
lines changed

2 files changed

+8
-0
lines changed

OneSignalSDK/onesignal/core/src/main/java/com/onesignal/common/threading/OSPrimaryCoroutineScope.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,6 @@ object OSPrimaryCoroutineScope {
1616
block()
1717
}
1818
}
19+
20+
suspend fun waitForIdle() = mainScope.launch { }.join()
1921
}

OneSignalSDK/onesignal/core/src/test/java/com/onesignal/core/internal/operations/OperationRepoTests.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.onesignal.core.internal.operations
22

3+
import com.onesignal.common.threading.OSPrimaryCoroutineScope
34
import com.onesignal.common.threading.Waiter
45
import com.onesignal.common.threading.WaiterWithValue
56
import com.onesignal.core.internal.operations.impl.OperationModelStore
@@ -157,6 +158,7 @@ class OperationRepoTests : FunSpec({
157158
// When
158159
operationRepo.start()
159160
operationRepo.enqueue(MyOperation())
161+
OSPrimaryCoroutineScope.waitForIdle()
160162

161163
// Then
162164
operationRepo.containsInstanceOf<MyOperation>() shouldBe true
@@ -261,6 +263,7 @@ class OperationRepoTests : FunSpec({
261263
// When
262264
opRepo.start()
263265
opRepo.enqueue(mockOperation())
266+
OSPrimaryCoroutineScope.waitForIdle()
264267
val response1 =
265268
withTimeoutOrNull(999) {
266269
opRepo.enqueueAndWait(mockOperation())
@@ -639,6 +642,7 @@ class OperationRepoTests : FunSpec({
639642
mocks.operationRepo.start()
640643
mocks.operationRepo.enqueue(operation1)
641644
mocks.operationRepo.enqueue(operation2)
645+
OSPrimaryCoroutineScope.waitForIdle()
642646
mocks.operationRepo.enqueueAndWait(operation3)
643647

644648
// Then
@@ -719,6 +723,7 @@ class OperationRepoTests : FunSpec({
719723
val mocks = Mocks()
720724
val op = mockOperation()
721725
mocks.operationRepo.enqueue(op)
726+
OSPrimaryCoroutineScope.waitForIdle()
722727

723728
// When
724729
mocks.operationRepo.loadSavedOperations()
@@ -759,6 +764,7 @@ class OperationRepoTests : FunSpec({
759764
// When
760765
opRepo.start()
761766
opRepo.enqueue(mockOperation())
767+
OSPrimaryCoroutineScope.waitForIdle()
762768
val response1 =
763769
withTimeoutOrNull(999) {
764770
opRepo.enqueueAndWait(mockOperation())

0 commit comments

Comments
 (0)