add test for favorite users

This commit is contained in:
Carlos Martinez
2020-02-06 14:50:52 -03:00
parent b720fb39e6
commit 5ed203c3b5

View File

@@ -3,6 +3,7 @@ package com.hako.userlist.feature
import androidx.fragment.app.testing.launchFragmentInContainer
import androidx.test.platform.app.InstrumentationRegistry
import com.hako.base.domain.database.dao.UserDao
import com.hako.base.domain.database.entities.UserEntity
import com.hako.testing.isTextDisplayed
import com.hako.userlist.domain.datasource.UserlistRemoteApi
import com.hako.userlist.domain.usecase.GetFavoriteUsers
@@ -11,11 +12,13 @@ import com.hako.userlist.domain.usecase.SetFavoriteStatus
import com.hako.userlist.model.User
import com.hako.userlist.model.toUserEntity
import com.hako.userlist.viewmodel.UserlistViewmodel
import org.junit.After
import org.junit.Before
import org.junit.Test
import org.koin.androidx.viewmodel.dsl.viewModel
import org.koin.core.context.loadKoinModules
import org.koin.core.context.startKoin
import org.koin.core.context.stopKoin
import org.koin.dsl.module
class UserlistFragmentTest {
@@ -33,15 +36,29 @@ class UserlistFragmentTest {
}
}
@After
fun killKoin() {
stopKoin()
}
@Test
fun shouldShowUserlist_withAllUsers() {
userlist {
initialState()
withTwoBasicUsers()
} should {
showTwoBasicUsers()
}
}
@Test
fun shouldShowOnlyFavoriteUserlist_withAllUsers() {
userlist {
withTwoBasicOneFavoriteUsers()
} should {
showOnlyOneFavorite()
}
}
private fun userlist(func: UserlistRobot.() -> Unit) =
UserlistRobot().apply {
func()
@@ -50,7 +67,7 @@ class UserlistFragmentTest {
class UserlistRobot {
fun initialState() {
fun withTwoBasicUsers() {
loadKoinModules(
module {
factory<UserDao> { MockUserDao(loadTwoBasicUsers().map { it.toUserEntity() }) }
@@ -60,6 +77,16 @@ class UserlistRobot {
launchFragmentInContainer<UserlistFragment>()
}
fun withTwoBasicOneFavoriteUsers() {
loadKoinModules(
module {
factory<UserDao> { MockUserDao(loadTwoUsersOneFavorite()) }
factory<UserlistRemoteApi> { MockUserApi(loadTwoBasicUsers()) }
}
)
launchFragmentInContainer<FavoriteUserlistFragment>()
}
infix fun should(func: UserlistResult.() -> Unit) {
UserlistResult().apply { func() }
}
@@ -82,6 +109,26 @@ class UserlistRobot {
"www.test2.com"
)
)
private fun loadTwoUsersOneFavorite() = listOf(
UserEntity(
1,
"Marian Arriaga",
"mariancita",
"test@gmail.com",
"+56873912",
"www.test.com",
true
),
UserEntity(
2,
"Carlos Martinez",
"carlitos",
"test2@gmail.com",
"+56873912",
"www.test2.com"
)
)
}
class UserlistResult {
@@ -91,4 +138,9 @@ class UserlistResult {
"Carlos Martinez".isTextDisplayed()
"carlitos".isTextDisplayed()
}
fun showOnlyOneFavorite() {
"Marian Arriaga".isTextDisplayed()
"mariancita".isTextDisplayed()
}
}