Advertisement
Guest User

Untitled

a guest
Jun 25th, 2019
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.37 KB | None | 0 0
  1. class UserViewModel(
  2. private val leApi: LeApi
  3. ): ViewModel() {
  4. private val _states = MutableLiveData<ViewModelState>()
  5. val states: LiveData<ViewModelState>
  6. get() = _states
  7.  
  8. fun getCurrentUser() {
  9. _states.value = LoadingState
  10. leApi.getCurrentUser()
  11. .subscribeOn(Schedulers.io())
  12. .observeOn(AndroidSchedulers.mainThread())
  13. .subscribe(
  14. { user -> _states.value = UserConnected(user) },
  15. { t -> _states.value = FailedState(t) }
  16. )
  17. }
  18. }
  19. }
  20.  
  21. @RunWith(MockitoJUnitRunner::class)
  22. class UserViewModelTest {
  23.  
  24. lateinit var userViewModel: UserViewModel
  25.  
  26. @Mock
  27. lateinit var view: Observer<ViewModelState>
  28.  
  29. @Mock
  30. lateinit var leApi: LeApi
  31.  
  32. @get:Rule
  33. val rule = InstantTaskExecutorRule()
  34.  
  35. @Before
  36. fun setUp() {
  37. RxAndroidPlugins.setInitMainThreadSchedulerHandler { Schedulers.trampoline() }
  38. userViewModel = UserViewModel(leApi)
  39. userViewModel.states.observeForever(view)
  40. }
  41.  
  42. @Test
  43. fun testGetCurrentUser() {
  44. val user = Mockito.mock(User::class.java)
  45. `when`(leApi.getCurrentUser()).thenReturn(Single.just(user))
  46. userViewModel.getCurrentUser()
  47.  
  48. val arg = ArgumentCaptor.forClass(ViewModelState::class.java)
  49. verify(view, times(2)).onChanged(arg.capture())
  50.  
  51. val values = arg.allValues
  52.  
  53. assertEquals(2, values.size)
  54. assertEquals(LoadingState, values[0])
  55. assertEquals(UserConnected(user), values[1])
  56. }
  57.  
  58. @Test
  59. fun testGetCurrentUserFailed() {
  60. val error = Throwable("Got error")
  61. `when`(leApi.getCurrentUser()).thenReturn(Single.error(error))
  62. userViewModel.getCurrentUser()
  63.  
  64. val arg = ArgumentCaptor.forClass(ViewModelState::class.java)
  65. verify(view, times(2)).onChanged(arg.capture())
  66.  
  67. val values = arg.allValues
  68. assertEquals(2, values.size)
  69. assertEquals(LoadingState, values[0])
  70. assertEquals(FailedState(error), values[1])
  71. }
  72. }
  73.  
  74. org.mockito.exceptions.verification.TooLittleActualInvocations:
  75. view.onChanged(<Capturing argument>);
  76. Wanted 2 times:
  77. -> at com.dev.titi.toto.mvvm.UserViewModelTest.testGetCurrentUserFailed(UserViewModelTest.kt:70)
  78. But was 1 time:
  79. -> at android.arch.lifecycle.LiveData.considerNotify(LiveData.java:109)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement