From 5ed203c3b5c949887036b5442bc431ae71dd0023 Mon Sep 17 00:00:00 2001 From: Carlos Martinez Date: Thu, 6 Feb 2020 14:50:52 -0300 Subject: [PATCH] add test for favorite users --- .../userlist/feature/UserlistFragmentTest.kt | 56 ++++++++++++++++++- 1 file changed, 54 insertions(+), 2 deletions(-) diff --git a/userlist/src/androidTest/java/com/hako/userlist/feature/UserlistFragmentTest.kt b/userlist/src/androidTest/java/com/hako/userlist/feature/UserlistFragmentTest.kt index c84d559..77c91d2 100644 --- a/userlist/src/androidTest/java/com/hako/userlist/feature/UserlistFragmentTest.kt +++ b/userlist/src/androidTest/java/com/hako/userlist/feature/UserlistFragmentTest.kt @@ -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 { MockUserDao(loadTwoBasicUsers().map { it.toUserEntity() }) } @@ -60,6 +77,16 @@ class UserlistRobot { launchFragmentInContainer() } + fun withTwoBasicOneFavoriteUsers() { + loadKoinModules( + module { + factory { MockUserDao(loadTwoUsersOneFavorite()) } + factory { MockUserApi(loadTwoBasicUsers()) } + } + ) + launchFragmentInContainer() + } + 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() + } } \ No newline at end of file