mirror of
https://github.com/KokaKiwi/BarInsta
synced 2024-11-22 14:47:29 +00:00
Add state username change ProfileFragmentViewModel test
This commit is contained in:
parent
976c9a86b6
commit
1605f9515d
@ -14,6 +14,7 @@ import awais.instagrabber.models.Resource
|
|||||||
import awais.instagrabber.repositories.responses.User
|
import awais.instagrabber.repositories.responses.User
|
||||||
import awais.instagrabber.webservices.*
|
import awais.instagrabber.webservices.*
|
||||||
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
||||||
|
import org.json.JSONException
|
||||||
import org.junit.Rule
|
import org.junit.Rule
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
import org.junit.jupiter.api.Assertions.assertEquals
|
import org.junit.jupiter.api.Assertions.assertEquals
|
||||||
@ -36,6 +37,12 @@ internal class ProfileFragmentViewModelTest {
|
|||||||
fullName = "Test user"
|
fullName = "Test user"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
private val testPublicUser1 = User(
|
||||||
|
pk = 101,
|
||||||
|
username = "test1",
|
||||||
|
fullName = "Test1 user1"
|
||||||
|
)
|
||||||
|
|
||||||
@ExperimentalCoroutinesApi
|
@ExperimentalCoroutinesApi
|
||||||
@Test
|
@Test
|
||||||
fun `no state username and null current user`() {
|
fun `no state username and null current user`() {
|
||||||
@ -181,4 +188,47 @@ internal class ProfileFragmentViewModelTest {
|
|||||||
}
|
}
|
||||||
assertEquals(testPublicUser, profile.data)
|
assertEquals(testPublicUser, profile.data)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ExperimentalCoroutinesApi
|
||||||
|
@Test
|
||||||
|
fun `state username changes`() {
|
||||||
|
val state = SavedStateHandle(
|
||||||
|
mutableMapOf<String, Any?>(
|
||||||
|
"username" to testPublicUser.username
|
||||||
|
)
|
||||||
|
)
|
||||||
|
val graphQLRepository = object : GraphQLRepository(GraphQLServiceAdapter()) {
|
||||||
|
override suspend fun fetchUser(username: String): User {
|
||||||
|
return when(username) {
|
||||||
|
testPublicUser.username -> testPublicUser
|
||||||
|
testPublicUser1.username -> testPublicUser1
|
||||||
|
else -> throw JSONException("")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
val viewModel = ProfileFragmentViewModel(
|
||||||
|
state,
|
||||||
|
UserRepository(UserServiceAdapter()),
|
||||||
|
FriendshipRepository(FriendshipServiceAdapter()),
|
||||||
|
StoriesRepository(StoriesServiceAdapter()),
|
||||||
|
MediaRepository(MediaServiceAdapter()),
|
||||||
|
graphQLRepository,
|
||||||
|
AccountRepository(AccountDataSource(AccountDaoAdapter())),
|
||||||
|
FavoriteRepository(FavoriteDataSource(FavoriteDaoAdapter())),
|
||||||
|
coroutineScope.dispatcher,
|
||||||
|
)
|
||||||
|
viewModel.setCurrentUser(Resource.success(null))
|
||||||
|
assertEquals(false, viewModel.isLoggedIn.getOrAwaitValue())
|
||||||
|
var profile = viewModel.profile.getOrAwaitValue()
|
||||||
|
while (profile.status == Resource.Status.LOADING) {
|
||||||
|
profile = viewModel.profile.getOrAwaitValue()
|
||||||
|
}
|
||||||
|
assertEquals(testPublicUser, profile.data)
|
||||||
|
state.set("username", testPublicUser1.username)
|
||||||
|
profile = viewModel.profile.getOrAwaitValue()
|
||||||
|
while (profile.status == Resource.Status.LOADING) {
|
||||||
|
profile = viewModel.profile.getOrAwaitValue()
|
||||||
|
}
|
||||||
|
assertEquals(testPublicUser1, profile.data)
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user