Skip to content

Commit 7b20fa5

Browse files
committed
add a test unit and fix some bugs
1 parent 67ab03a commit 7b20fa5

File tree

3 files changed

+61
-12
lines changed

3 files changed

+61
-12
lines changed

OneSignalSDK/onesignal/core/src/main/java/com/onesignal/core/internal/operations/impl/OperationRepo.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,11 +58,11 @@ internal class OperationRepo(
5858
get() = loadedSubscription.hasSubscribers
5959

6060
override fun unsubscribe(handler: IOperationRepoLoadedListener) {
61-
loadedSubscription.subscribe(handler)
61+
loadedSubscription.unsubscribe(handler)
6262
}
6363

6464
override fun subscribe(handler: IOperationRepoLoadedListener) {
65-
loadedSubscription.unsubscribe(handler)
65+
loadedSubscription.subscribe(handler)
6666
}
6767

6868
/** *** Buckets ***

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

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,6 @@ import com.onesignal.core.internal.time.impl.Time
99
import com.onesignal.debug.LogLevel
1010
import com.onesignal.debug.internal.logging.Logging
1111
import com.onesignal.mocks.MockHelper
12-
import com.onesignal.user.internal.identity.IdentityModel
13-
import com.onesignal.user.internal.identity.IdentityModelStore
14-
import com.onesignal.user.internal.migrations.RecoverFromDroppedLoginBug
1512
import com.onesignal.user.internal.operations.ExecutorMocks.Companion.getNewRecordState
1613
import io.kotest.core.spec.style.FunSpec
1714
import io.kotest.matchers.shouldBe
@@ -594,17 +591,21 @@ class OperationRepoTests : FunSpec({
594591
result shouldBe null
595592
}
596593

597-
test("IOperationRepoLoadedListener") {
594+
test("ensure onOperationRepoLoaded is called once loading is completed") {
595+
// Given
598596
val mocks = Mocks()
599-
val mockIdentityModel = mockk<IdentityModel>()
600-
val mockIdentityModelStore = mockk<IdentityModelStore>()
601-
val recovery = RecoverFromDroppedLoginBug(mocks.operationRepo, mockIdentityModelStore, mocks.configModelStore)
597+
val spyListener = spyk<IOperationRepoLoadedListener>()
602598

599+
// When
600+
mocks.operationRepo.addOperationLoadedListener(spyListener)
603601
mocks.operationRepo.start()
604-
recovery.start()
605602

606-
verify {
607-
mocks.operationRepo.subscribe(recovery)
603+
// Then
604+
mocks.operationRepo.hasSubscribers shouldBe true
605+
coVerifyOrder {
606+
mocks.operationRepo.subscribe(any())
607+
mocks.operationModelStore.loadOperations()
608+
spyListener.onOperationRepoLoaded()
608609
}
609610
}
610611
}) {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package com.onesignal.user.internal.migrations
2+
3+
import com.onesignal.core.internal.config.ConfigModelStore
4+
import com.onesignal.core.internal.operations.impl.OperationModelStore
5+
import com.onesignal.core.internal.operations.impl.OperationRepo
6+
import com.onesignal.core.internal.time.impl.Time
7+
import com.onesignal.mocks.MockHelper
8+
import com.onesignal.user.internal.operations.ExecutorMocks
9+
import io.kotest.core.spec.style.FunSpec
10+
import io.mockk.every
11+
import io.mockk.just
12+
import io.mockk.mockk
13+
import io.mockk.runs
14+
import io.mockk.spyk
15+
import io.mockk.verify
16+
17+
class RecoverFromDroppedLoginBugTests : FunSpec({
18+
test("ensure RecoverFromDroppedLoginBug receive onOperationRepoLoaded callback from operationRepo") {
19+
// Given
20+
val mockOperationModelStore = mockk<OperationModelStore>()
21+
val mockConfigModelStore = mockk<ConfigModelStore>()
22+
val operationRepo =
23+
spyk(
24+
OperationRepo(
25+
listOf(),
26+
mockOperationModelStore,
27+
mockConfigModelStore,
28+
Time(),
29+
ExecutorMocks.getNewRecordState(mockConfigModelStore),
30+
),
31+
)
32+
every { mockOperationModelStore.loadOperations() } just runs
33+
every { mockOperationModelStore.list() } returns listOf()
34+
35+
val recovery = RecoverFromDroppedLoginBug(operationRepo, MockHelper.identityModelStore(), mockConfigModelStore)
36+
every { recovery.onOperationRepoLoaded() } just runs
37+
38+
// When
39+
operationRepo.start()
40+
recovery.start()
41+
42+
// Then
43+
verify {
44+
operationRepo.subscribe(recovery)
45+
recovery.onOperationRepoLoaded()
46+
}
47+
}
48+
})

0 commit comments

Comments
 (0)