Rak
01/05/2022, 5:19 PM@Test
fun firstTest() = runBlocking {
// given
coEvery { repo.getServerTime() } returns Result.success(aDate)
coEvery { repo.getUser() } returns ApiResultWrapper.Success(aUserResponse)
every { prefs.getPass(any()) } returns null
// when
val testSubject = HubViewModel(authService, repo, prefs).test(HubState(loading = true))
testSubject.runOnCreate()
testSubject.testIntent {
loadUser()
}
// then
testSubject.assert(HubState(loading = true)) {
states(
{ copy(loading = false) }
)
}
}
miqbaldc
01/06/2022, 3:38 AMHubViewModel
snippet code?Rak
01/06/2022, 8:13 AMclass HubViewModel(
private val authService: AuthService,
private val repo: MerlinRepository,
private val prefs: Preferences,
) : BaseVM(), ContainerHost<HubState, NavigationEvent> {
override val container: Container<HubState, NavigationEvent> =
container(HubState(loading = true)) {
loadUser()
}
fun loadUser() = intent {
repeatOnSubscription {
val serverTimeResult = repo.getServerTime()
if (serverTimeResult.isFailure) {
postSideEffect(GlobalNavigationEvent.NavigateToGenericError)
}
when (val response = repo.getUser()) {
appmattus
01/06/2022, 8:56 AMrepeatOnSubscription
@Mikolaj Leszczynski?Rak
01/06/2022, 8:59 AMMikolaj Leszczynski
01/06/2022, 7:29 PMrepeatOnSubscription
might never be subscribing in unit tests! I’ll file an issue.