diff --git a/OneSignalSDK/onesignal/core/src/main/java/com/onesignal/common/threading/OSPrimaryCoroutineScope.kt b/OneSignalSDK/onesignal/core/src/main/java/com/onesignal/common/threading/OSPrimaryCoroutineScope.kt index 4977c54ff2..78eee700a5 100644 --- a/OneSignalSDK/onesignal/core/src/main/java/com/onesignal/common/threading/OSPrimaryCoroutineScope.kt +++ b/OneSignalSDK/onesignal/core/src/main/java/com/onesignal/common/threading/OSPrimaryCoroutineScope.kt @@ -16,4 +16,6 @@ object OSPrimaryCoroutineScope { block() } } + + suspend fun waitForIdle() = mainScope.launch { }.join() } diff --git a/OneSignalSDK/onesignal/core/src/test/java/com/onesignal/core/internal/operations/OperationRepoTests.kt b/OneSignalSDK/onesignal/core/src/test/java/com/onesignal/core/internal/operations/OperationRepoTests.kt index fb7d701deb..6e9c9a3b26 100644 --- a/OneSignalSDK/onesignal/core/src/test/java/com/onesignal/core/internal/operations/OperationRepoTests.kt +++ b/OneSignalSDK/onesignal/core/src/test/java/com/onesignal/core/internal/operations/OperationRepoTests.kt @@ -1,5 +1,6 @@ package com.onesignal.core.internal.operations +import com.onesignal.common.threading.OSPrimaryCoroutineScope import com.onesignal.common.threading.Waiter import com.onesignal.common.threading.WaiterWithValue import com.onesignal.core.internal.operations.impl.OperationModelStore @@ -100,6 +101,7 @@ class OperationRepoTests : FunSpec({ listOf(mocks.executor), operationModelStore, mocks.configModelStore, + mocks.identityModelStore, Time(), getNewRecordState(mocks.configModelStore), ), @@ -165,6 +167,7 @@ class OperationRepoTests : FunSpec({ // When operationRepo.start() operationRepo.enqueue(MyOperation()) + OSPrimaryCoroutineScope.waitForIdle() // Then operationRepo.containsInstanceOf() shouldBe true @@ -269,6 +272,7 @@ class OperationRepoTests : FunSpec({ // When opRepo.start() opRepo.enqueue(mockOperation()) + OSPrimaryCoroutineScope.waitForIdle() val response1 = withTimeoutOrNull(999) { opRepo.enqueueAndWait(mockOperation()) @@ -647,6 +651,7 @@ class OperationRepoTests : FunSpec({ mocks.operationRepo.start() mocks.operationRepo.enqueue(operation1) mocks.operationRepo.enqueue(operation2) + OSPrimaryCoroutineScope.waitForIdle() mocks.operationRepo.enqueueAndWait(operation3) // Then @@ -727,6 +732,7 @@ class OperationRepoTests : FunSpec({ val mocks = Mocks() val op = mockOperation() mocks.operationRepo.enqueue(op) + OSPrimaryCoroutineScope.waitForIdle() // When mocks.operationRepo.loadSavedOperations() @@ -767,6 +773,7 @@ class OperationRepoTests : FunSpec({ // When opRepo.start() opRepo.enqueue(mockOperation()) + OSPrimaryCoroutineScope.waitForIdle() val response1 = withTimeoutOrNull(999) { opRepo.enqueueAndWait(mockOperation())