mirror of
https://github.com/imcarlost/Friendlists.git
synced 2026-04-10 02:46:54 -04:00
add test for favorite users
This commit is contained in:
@@ -3,6 +3,7 @@ package com.hako.userlist.feature
|
|||||||
import androidx.fragment.app.testing.launchFragmentInContainer
|
import androidx.fragment.app.testing.launchFragmentInContainer
|
||||||
import androidx.test.platform.app.InstrumentationRegistry
|
import androidx.test.platform.app.InstrumentationRegistry
|
||||||
import com.hako.base.domain.database.dao.UserDao
|
import com.hako.base.domain.database.dao.UserDao
|
||||||
|
import com.hako.base.domain.database.entities.UserEntity
|
||||||
import com.hako.testing.isTextDisplayed
|
import com.hako.testing.isTextDisplayed
|
||||||
import com.hako.userlist.domain.datasource.UserlistRemoteApi
|
import com.hako.userlist.domain.datasource.UserlistRemoteApi
|
||||||
import com.hako.userlist.domain.usecase.GetFavoriteUsers
|
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.User
|
||||||
import com.hako.userlist.model.toUserEntity
|
import com.hako.userlist.model.toUserEntity
|
||||||
import com.hako.userlist.viewmodel.UserlistViewmodel
|
import com.hako.userlist.viewmodel.UserlistViewmodel
|
||||||
|
import org.junit.After
|
||||||
import org.junit.Before
|
import org.junit.Before
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
import org.koin.androidx.viewmodel.dsl.viewModel
|
import org.koin.androidx.viewmodel.dsl.viewModel
|
||||||
import org.koin.core.context.loadKoinModules
|
import org.koin.core.context.loadKoinModules
|
||||||
import org.koin.core.context.startKoin
|
import org.koin.core.context.startKoin
|
||||||
|
import org.koin.core.context.stopKoin
|
||||||
import org.koin.dsl.module
|
import org.koin.dsl.module
|
||||||
|
|
||||||
class UserlistFragmentTest {
|
class UserlistFragmentTest {
|
||||||
@@ -33,15 +36,29 @@ class UserlistFragmentTest {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@After
|
||||||
|
fun killKoin() {
|
||||||
|
stopKoin()
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun shouldShowUserlist_withAllUsers() {
|
fun shouldShowUserlist_withAllUsers() {
|
||||||
userlist {
|
userlist {
|
||||||
initialState()
|
withTwoBasicUsers()
|
||||||
} should {
|
} should {
|
||||||
showTwoBasicUsers()
|
showTwoBasicUsers()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun shouldShowOnlyFavoriteUserlist_withAllUsers() {
|
||||||
|
userlist {
|
||||||
|
withTwoBasicOneFavoriteUsers()
|
||||||
|
} should {
|
||||||
|
showOnlyOneFavorite()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private fun userlist(func: UserlistRobot.() -> Unit) =
|
private fun userlist(func: UserlistRobot.() -> Unit) =
|
||||||
UserlistRobot().apply {
|
UserlistRobot().apply {
|
||||||
func()
|
func()
|
||||||
@@ -50,7 +67,7 @@ class UserlistFragmentTest {
|
|||||||
|
|
||||||
class UserlistRobot {
|
class UserlistRobot {
|
||||||
|
|
||||||
fun initialState() {
|
fun withTwoBasicUsers() {
|
||||||
loadKoinModules(
|
loadKoinModules(
|
||||||
module {
|
module {
|
||||||
factory<UserDao> { MockUserDao(loadTwoBasicUsers().map { it.toUserEntity() }) }
|
factory<UserDao> { MockUserDao(loadTwoBasicUsers().map { it.toUserEntity() }) }
|
||||||
@@ -60,6 +77,16 @@ class UserlistRobot {
|
|||||||
launchFragmentInContainer<UserlistFragment>()
|
launchFragmentInContainer<UserlistFragment>()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun withTwoBasicOneFavoriteUsers() {
|
||||||
|
loadKoinModules(
|
||||||
|
module {
|
||||||
|
factory<UserDao> { MockUserDao(loadTwoUsersOneFavorite()) }
|
||||||
|
factory<UserlistRemoteApi> { MockUserApi(loadTwoBasicUsers()) }
|
||||||
|
}
|
||||||
|
)
|
||||||
|
launchFragmentInContainer<FavoriteUserlistFragment>()
|
||||||
|
}
|
||||||
|
|
||||||
infix fun should(func: UserlistResult.() -> Unit) {
|
infix fun should(func: UserlistResult.() -> Unit) {
|
||||||
UserlistResult().apply { func() }
|
UserlistResult().apply { func() }
|
||||||
}
|
}
|
||||||
@@ -82,6 +109,26 @@ class UserlistRobot {
|
|||||||
"www.test2.com"
|
"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 {
|
class UserlistResult {
|
||||||
@@ -91,4 +138,9 @@ class UserlistResult {
|
|||||||
"Carlos Martinez".isTextDisplayed()
|
"Carlos Martinez".isTextDisplayed()
|
||||||
"carlitos".isTextDisplayed()
|
"carlitos".isTextDisplayed()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun showOnlyOneFavorite() {
|
||||||
|
"Marian Arriaga".isTextDisplayed()
|
||||||
|
"mariancita".isTextDisplayed()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user