package io.hefuyi.zhihudaily.mvp.presenter; import org.junit.Before; import org.junit.Test; import io.hefuyi.zhihudaily.mvp.contract.NavigationContract; import io.hefuyi.zhihudaily.mvp.model.Themes; import io.hefuyi.zhihudaily.domain.FetchThemesUsecase; import rx.Observable; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; /** * Created by hefuyi on 16/9/5. */ public class NavigationPresenterTest { FetchThemesUsecase mUsecase; NavigationContract.View mView; NavigationPresenter mPresenter; @Before public void setUp() { mUsecase = mock(FetchThemesUsecase.class); mView = mock(NavigationContract.View.class); mPresenter = new NavigationPresenter(mUsecase); mPresenter.attachView(mView); } @Test public void testRefresh() { Themes fakeTheme = new Themes(); when(mUsecase.execute()).thenReturn(Observable.<Themes>just(fakeTheme)); mPresenter.refresh(); verify(mUsecase).execute(); verify(mView).showThemes(fakeTheme); } @Test public void testRefreshError() { when(mUsecase.execute()).thenReturn(Observable.<Themes>error(new Throwable())); mPresenter.refresh(); verify(mUsecase).execute(); verify(mView).showError(); } }