Skip to content

Commit 685e471

Browse files
committed
flaky test due to not waiting for OperationRepo
This test had two problems: 1. We were not waiting for OperationRepo.loadSavedOperations to finish 2. After we added waiting, it didn't work we didn't wrap RecoverFromDroppedLoginBug in spyk(). This was causing all fields and properties being cleared from it!
1 parent 346b4ce commit 685e471

File tree

1 file changed

+15
-5
lines changed

1 file changed

+15
-5
lines changed

OneSignalSDK/onesignal/core/src/test/java/com/onesignal/user/internal/migrations/RecoverFromDroppedLoginBugTests.kt

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package com.onesignal.user.internal.migrations
22

3+
import com.onesignal.common.threading.Waiter
34
import com.onesignal.core.internal.config.ConfigModelStore
5+
import com.onesignal.core.internal.operations.IOperationRepoLoadedListener
46
import com.onesignal.core.internal.operations.impl.OperationModelStore
57
import com.onesignal.core.internal.operations.impl.OperationRepo
68
import com.onesignal.core.internal.time.impl.Time
@@ -31,16 +33,24 @@ class RecoverFromDroppedLoginBugTests : FunSpec({
3133
)
3234
every { mockOperationModelStore.loadOperations() } just runs
3335
every { mockOperationModelStore.list() } returns listOf()
34-
35-
val recovery = RecoverFromDroppedLoginBug(operationRepo, MockHelper.identityModelStore(), mockConfigModelStore)
36-
every { recovery.onOperationRepoLoaded() } just runs
36+
val recovery = spyk(RecoverFromDroppedLoginBug(operationRepo, MockHelper.identityModelStore(), mockConfigModelStore))
3737

3838
// When
39-
operationRepo.start()
4039
recovery.start()
40+
val waiter = Waiter()
41+
operationRepo.addOperationLoadedListener(
42+
object : IOperationRepoLoadedListener {
43+
override fun onOperationRepoLoaded() {
44+
waiter.wake()
45+
}
46+
},
47+
)
48+
operationRepo.start()
49+
// Waiting here ensures recovery.onOperationRepoLoaded() is called consistently
50+
waiter.waitForWake()
4151

4252
// Then
43-
verify {
53+
verify(exactly = 1) {
4454
operationRepo.subscribe(recovery)
4555
recovery.onOperationRepoLoaded()
4656
}

0 commit comments

Comments
 (0)