mirror of
https://github.com/pezkuwichain/pezkuwi-wallet-android.git
synced 2026-10-20 18:56:25 +00:00
test(splash): the initial destination is navigated to once
This commit is contained in:
1 parent
280ccc3fd6
commit
8d5cb919db
2 files changed
+50
No files matched your search
@@ -33,6 +33,7 @@ dependencies {
|
||||
|
||||
testImplementation jUnitDep
|
||||
testImplementation mockitoDep
|
||||
testImplementation project(':test-shared')
|
||||
|
||||
implementation coroutinesDep
|
||||
implementation coroutinesAndroidDep
|
||||
|
||||
+49
@@ -0,0 +1,49 @@
|
||||
package io.novafoundation.nova.splash.presentation
|
||||
|
||||
import io.novafoundation.nova.common.utils.splash.SplashPassedObserver
|
||||
import io.novafoundation.nova.feature_account_api.domain.interfaces.AccountRepository
|
||||
import io.novafoundation.nova.splash.SplashRouter
|
||||
import io.novafoundation.nova.test_shared.whenever
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
||||
import kotlinx.coroutines.runBlocking
|
||||
import kotlinx.coroutines.test.UnconfinedTestDispatcher
|
||||
import kotlinx.coroutines.test.resetMain
|
||||
import kotlinx.coroutines.test.setMain
|
||||
import org.junit.After
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
import org.mockito.Mockito.mock
|
||||
import org.mockito.Mockito.times
|
||||
import org.mockito.Mockito.verify
|
||||
|
||||
@OptIn(ExperimentalCoroutinesApi::class)
|
||||
class SplashViewModelTest {
|
||||
|
||||
private val router = mock(SplashRouter::class.java)
|
||||
private val repository = mock(AccountRepository::class.java)
|
||||
private val splashPassedObserver = mock(SplashPassedObserver::class.java)
|
||||
|
||||
@Before
|
||||
fun setUp() {
|
||||
Dispatchers.setMain(UnconfinedTestDispatcher())
|
||||
}
|
||||
|
||||
@After
|
||||
fun tearDown() {
|
||||
Dispatchers.resetMain()
|
||||
}
|
||||
|
||||
// The splash screen asks again on every onResume, including the one after the
|
||||
// activity is recreated; navigating twice crashed the app on the welcome screen.
|
||||
@Test
|
||||
fun `navigates to the welcome screen once however often it is asked`() {
|
||||
runBlocking { whenever(repository.isAccountSelected()).thenReturn(false) }
|
||||
val viewModel = SplashViewModel(router, repository, splashPassedObserver)
|
||||
|
||||
viewModel.openInitialDestination()
|
||||
viewModel.openInitialDestination()
|
||||
|
||||
verify(router, times(1)).openWelcomeScreen()
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user