diff --git a/OneSignalSDK/onesignal/core/src/test/java/com/onesignal/core/internal/http/HttpClientTests.kt b/OneSignalSDK/onesignal/core/src/test/java/com/onesignal/core/internal/http/HttpClientTests.kt index a14039559a..b2fc8d941b 100644 --- a/OneSignalSDK/onesignal/core/src/test/java/com/onesignal/core/internal/http/HttpClientTests.kt +++ b/OneSignalSDK/onesignal/core/src/test/java/com/onesignal/core/internal/http/HttpClientTests.kt @@ -239,7 +239,7 @@ class HttpClientTests : FunSpec({ mocks.factory.mockResponse = mockSuccessfulResponse val response2 = - withTimeoutOrNull(999) { + withTimeoutOrNull(975) { mocks.httpClient.post("URL", JSONObject()) } 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 529e794f63..07c634e892 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 @@ -607,6 +607,8 @@ class OperationRepoTests : FunSpec({ // When mocks.operationRepo.addOperationLoadedListener(spyListener) mocks.operationRepo.start() + // enqueueAndWait used to know we are fully loaded. + mocks.operationRepo.enqueueAndWait(mockOperation()) // Then mocks.operationRepo.hasSubscribers shouldBe true diff --git a/OneSignalSDK/onesignal/core/src/test/java/com/onesignal/user/internal/migrations/RecoverFromDroppedLoginBugTests.kt b/OneSignalSDK/onesignal/core/src/test/java/com/onesignal/user/internal/migrations/RecoverFromDroppedLoginBugTests.kt index 4cb82d08ec..bd5082b806 100644 --- a/OneSignalSDK/onesignal/core/src/test/java/com/onesignal/user/internal/migrations/RecoverFromDroppedLoginBugTests.kt +++ b/OneSignalSDK/onesignal/core/src/test/java/com/onesignal/user/internal/migrations/RecoverFromDroppedLoginBugTests.kt @@ -1,6 +1,8 @@ package com.onesignal.user.internal.migrations +import com.onesignal.common.threading.Waiter import com.onesignal.core.internal.config.ConfigModelStore +import com.onesignal.core.internal.operations.IOperationRepoLoadedListener import com.onesignal.core.internal.operations.impl.OperationModelStore import com.onesignal.core.internal.operations.impl.OperationRepo import com.onesignal.core.internal.time.impl.Time @@ -31,16 +33,24 @@ class RecoverFromDroppedLoginBugTests : FunSpec({ ) every { mockOperationModelStore.loadOperations() } just runs every { mockOperationModelStore.list() } returns listOf() - - val recovery = RecoverFromDroppedLoginBug(operationRepo, MockHelper.identityModelStore(), mockConfigModelStore) - every { recovery.onOperationRepoLoaded() } just runs + val recovery = spyk(RecoverFromDroppedLoginBug(operationRepo, MockHelper.identityModelStore(), mockConfigModelStore)) // When - operationRepo.start() recovery.start() + val waiter = Waiter() + operationRepo.addOperationLoadedListener( + object : IOperationRepoLoadedListener { + override fun onOperationRepoLoaded() { + waiter.wake() + } + }, + ) + operationRepo.start() + // Waiting here ensures recovery.onOperationRepoLoaded() is called consistently + waiter.waitForWake() // Then - verify { + verify(exactly = 1) { operationRepo.subscribe(recovery) recovery.onOperationRepoLoaded() }