@Test
fun onFetchUserInfoTest() {
fun success() {
fun hideProgressAndShowUserInfoLayout() {
verify(viewMock, times(1)).setProgressBarVisibility(View.GONE)
verify(viewMock, times(1)).setParentLayoutVisibility(View.VISIBLE)
}
fun setUserInfoMinCase() {
val userEntity = UserEntity(name = "kirimin", location = null, company = null, blog = null, email = null, avatar_url = null)
whenever(useCaseMock.fetchUserInfo("kirimin")).thenReturn(Single.just(User(userEntity, listOf(RepositoryEntity()))))
initializeMocks()
presenter.onSubmitButtonClick("kirimin")
hideProgressAndShowUserInfoLayout()
verify(viewMock, times(1)).setUserName("kirimin")
verify(viewMock, times(1)).setLocationTextAndVisibility(eq(View.GONE), anyString())
verify(viewMock, times(1)).setMailTextAndVisibility(eq(View.GONE), anyString())
verify(viewMock, times(1)).setLinkTextAndVisibility(eq(View.GONE), anyString())
verify(viewMock, times(1)).setIconVisibility(View.INVISIBLE)
}
fun setUserInfoMaxCase() {
val userEntity = UserEntity(name = "kirimin", location = "tokyo, japan", company = "kirimin inc.", blog = "http://kirimin.me", email = "[email protected]
avatar_url = "http://kirimin.me/face_icon.png")
whenever(useCaseMock.fetchUserInfo("kirimin")).thenReturn(Single.just(User(userEntity, listOf(RepositoryEntity()))))
initializeMocks()
presenter.onSubmitButtonClick("kirimin")
hideProgressAndShowUserInfoLayout()
verify(viewMock, times(1)).setUserName("kirimin")
verify(viewMock, times(1)).setLocationTextAndVisibility(View.VISIBLE, "tokyo, japan")
verify(viewMock, times(1)).setMailTextAndVisibility(View.VISIBLE, "[email protected]")
verify(viewMock, times(1)).setLinkTextAndVisibility(View.VISIBLE, "http://kirimin.me")
verify(viewMock, times(1)).setIconVisibility(View.VISIBLE)
verify(viewMock, times(1)).setIcon("http://kirimin.me/face_icon.png")
}
setUserInfoMinCase()
setUserInfoMaxCase()
}
fun failed() {
whenever(useCaseMock.fetchUserInfo("kirimin")).thenReturn(Single.error(Exception("the error")))
initializeMocks()
presenter.onSubmitButtonClick("kirimin")
verify(viewMock, times(1)).setProgressBarVisibility(View.GONE)
verify(viewMock, never()).setParentLayoutVisibility(View.VISIBLE)
verify(viewMock, times(1)).showErrorToast(anyString())
}
presenter.onCreate()
success()
failed()
}