@@ -2,6 +2,7 @@ package to.bitkit.ui
22
33import kotlinx.coroutines.ExperimentalCoroutinesApi
44import kotlinx.coroutines.flow.MutableStateFlow
5+ import kotlinx.coroutines.runBlocking
56import kotlinx.coroutines.test.advanceUntilIdle
67import org.junit.Assert.assertEquals
78import org.junit.Before
@@ -23,6 +24,7 @@ import to.bitkit.repositories.LightningState
2324import to.bitkit.repositories.SyncSource
2425import to.bitkit.repositories.WalletRepo
2526import to.bitkit.repositories.WalletState
27+ import to.bitkit.services.MigrationService
2628import to.bitkit.test.BaseUnitTest
2729import to.bitkit.viewmodels.RestoreState
2830import to.bitkit.viewmodels.WalletViewModel
@@ -36,16 +38,18 @@ class WalletViewModelTest : BaseUnitTest() {
3638 private val settingsStore = mock<SettingsStore >()
3739 private val backupRepo = mock<BackupRepo >()
3840 private val blocktankRepo = mock<BlocktankRepo >()
41+ private val migrationService = mock<MigrationService >()
3942
4043 private val lightningState = MutableStateFlow (LightningState ())
4144 private val walletState = MutableStateFlow (WalletState ())
4245 private val balanceState = MutableStateFlow (BalanceState ())
4346 private val isRecoveryMode = MutableStateFlow (false )
4447
4548 @Before
46- fun setUp () {
49+ fun setUp () = runBlocking {
4750 whenever(walletRepo.walletState).thenReturn(walletState)
4851 whenever(lightningRepo.lightningState).thenReturn(lightningState)
52+ whenever(migrationService.isMigrationChecked()).thenReturn(true )
4953
5054 sut = WalletViewModel (
5155 bgDispatcher = testDispatcher,
@@ -54,6 +58,7 @@ class WalletViewModelTest : BaseUnitTest() {
5458 settingsStore = settingsStore,
5559 backupRepo = backupRepo,
5660 blocktankRepo = blocktankRepo,
61+ migrationService = migrationService,
5762 )
5863 }
5964
@@ -164,7 +169,7 @@ class WalletViewModelTest : BaseUnitTest() {
164169
165170 @Test
166171 fun `backup restore should not be triggered when wallet exists while not restoring` () = test {
167- assertEquals(RestoreState .Initial , sut.restoreState)
172+ assertEquals(RestoreState .Initial , sut.restoreState.value )
168173
169174 walletState.value = walletState.value.copy(walletExists = true )
170175
@@ -176,11 +181,11 @@ class WalletViewModelTest : BaseUnitTest() {
176181 whenever(backupRepo.performFullRestoreFromLatestBackup()).thenReturn(Result .success(Unit ))
177182 walletState.value = walletState.value.copy(walletExists = true )
178183 sut.restoreWallet(" mnemonic" , " passphrase" )
179- assertEquals(RestoreState .InProgress .Wallet , sut.restoreState)
184+ assertEquals(RestoreState .InProgress .Wallet , sut.restoreState.value )
180185
181186 sut.onRestoreContinue()
182187
183- assertEquals(RestoreState .Settled , sut.restoreState)
188+ assertEquals(RestoreState .Settled , sut.restoreState.value )
184189 }
185190
186191 @Test
@@ -189,26 +194,26 @@ class WalletViewModelTest : BaseUnitTest() {
189194 whenever(backupRepo.performFullRestoreFromLatestBackup()).thenReturn(Result .failure(testError))
190195 sut.restoreWallet(" mnemonic" , " passphrase" )
191196 walletState.value = walletState.value.copy(walletExists = true )
192- assertEquals(RestoreState .Completed , sut.restoreState)
197+ assertEquals(RestoreState .Completed , sut.restoreState.value )
193198
194199 sut.proceedWithoutRestore(onDone = {})
195200 advanceUntilIdle()
196- assertEquals(RestoreState .Settled , sut.restoreState)
201+ assertEquals(RestoreState .Settled , sut.restoreState.value )
197202 }
198203
199204 @Test
200205 fun `restore state should transition as expected` () = test {
201206 whenever(backupRepo.performFullRestoreFromLatestBackup()).thenReturn(Result .success(Unit ))
202- assertEquals(RestoreState .Initial , sut.restoreState)
207+ assertEquals(RestoreState .Initial , sut.restoreState.value )
203208
204209 sut.restoreWallet(" mnemonic" , " passphrase" )
205- assertEquals(RestoreState .InProgress .Wallet , sut.restoreState)
210+ assertEquals(RestoreState .InProgress .Wallet , sut.restoreState.value )
206211
207212 walletState.value = walletState.value.copy(walletExists = true )
208- assertEquals(RestoreState .Completed , sut.restoreState)
213+ assertEquals(RestoreState .Completed , sut.restoreState.value )
209214
210215 sut.onRestoreContinue()
211- assertEquals(RestoreState .Settled , sut.restoreState)
216+ assertEquals(RestoreState .Settled , sut.restoreState.value )
212217 }
213218
214219 @Test
@@ -226,7 +231,7 @@ class WalletViewModelTest : BaseUnitTest() {
226231 whenever(testWalletRepo.walletExists()).thenReturn(true )
227232 whenever(testLightningRepo.lightningState).thenReturn(lightningState)
228233 whenever(testLightningRepo.isRecoveryMode).thenReturn(isRecoveryMode)
229- whenever(testLightningRepo.start(any(), anyOrNull(), any(), anyOrNull(), anyOrNull(), anyOrNull()))
234+ whenever(testLightningRepo.start(any(), anyOrNull(), any(), anyOrNull(), anyOrNull(), anyOrNull(), anyOrNull() ))
230235 .thenReturn(Result .success(Unit ))
231236
232237 val testSut = WalletViewModel (
@@ -236,15 +241,16 @@ class WalletViewModelTest : BaseUnitTest() {
236241 settingsStore = settingsStore,
237242 backupRepo = backupRepo,
238243 blocktankRepo = blocktankRepo,
244+ migrationService = migrationService,
239245 )
240246
241- assertEquals(RestoreState .Initial , testSut.restoreState)
247+ assertEquals(RestoreState .Initial , testSut.restoreState.value )
242248 assertEquals(true , testSut.walletExists)
243249
244250 testSut.start()
245251 advanceUntilIdle()
246252
247- verify(testLightningRepo).start(any(), anyOrNull(), any(), anyOrNull(), anyOrNull(), anyOrNull())
253+ verify(testLightningRepo).start(any(), anyOrNull(), any(), anyOrNull(), anyOrNull(), anyOrNull(), anyOrNull() )
248254 verify(testWalletRepo).refreshBip21()
249255 }
250256
@@ -264,7 +270,7 @@ class WalletViewModelTest : BaseUnitTest() {
264270 whenever(testWalletRepo.restoreWallet(any(), anyOrNull())).thenReturn(Result .success(Unit ))
265271 whenever(testLightningRepo.lightningState).thenReturn(lightningState)
266272 whenever(testLightningRepo.isRecoveryMode).thenReturn(isRecoveryMode)
267- whenever(testLightningRepo.start(any(), anyOrNull(), any(), anyOrNull(), anyOrNull(), anyOrNull()))
273+ whenever(testLightningRepo.start(any(), anyOrNull(), any(), anyOrNull(), anyOrNull(), anyOrNull(), anyOrNull() ))
268274 .thenReturn(Result .success(Unit ))
269275
270276 val testSut = WalletViewModel (
@@ -274,11 +280,12 @@ class WalletViewModelTest : BaseUnitTest() {
274280 settingsStore = settingsStore,
275281 backupRepo = backupRepo,
276282 blocktankRepo = blocktankRepo,
283+ migrationService = migrationService,
277284 )
278285
279286 // Trigger restore to put state in non-idle
280287 testSut.restoreWallet(" mnemonic" , null )
281- assertEquals(RestoreState .InProgress .Wallet , testSut.restoreState)
288+ assertEquals(RestoreState .InProgress .Wallet , testSut.restoreState.value )
282289
283290 testSut.start()
284291 advanceUntilIdle()
0 commit comments