package io.hefuyi.zhihudaily.mvp.presenter; import org.junit.Before; import org.junit.Test; import io.hefuyi.zhihudaily.mvp.contract.StoryContract; import io.hefuyi.zhihudaily.mvp.model.Story; import io.hefuyi.zhihudaily.domain.FetchStoryDetailUsecase; 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 StoryPresenterTest { FetchStoryDetailUsecase mUsecase; StoryContract.View mView; StoryPresenter mPresenter; @Before public void setUp() { mUsecase = mock(FetchStoryDetailUsecase.class); mView = mock(StoryContract.View.class); mPresenter = new StoryPresenter(mUsecase); mPresenter.attachView(mView); } @Test public void testRefresh() { String storyId = ""; Story fakeStory = new Story(); when(mUsecase.execute()).thenReturn(Observable.just(fakeStory)); mPresenter.refresh(storyId); verify(mUsecase).setStoryId(storyId); verify(mView).hideProgressBar(); verify(mView).showStory(fakeStory); } @Test public void testRefreshError() { String storyId = ""; when(mUsecase.execute()).thenReturn(Observable.<Story>error(new Throwable())); mPresenter.refresh(storyId); verify(mUsecase).setStoryId(storyId); verify(mView).hideProgressBar(); verify(mView).showError(); } }