package io.hefuyi.zhihudaily.mvp.presenter; import org.junit.Before; import org.junit.Test; import io.hefuyi.zhihudaily.mvp.contract.SplashContract; import io.hefuyi.zhihudaily.mvp.model.StartImage; import io.hefuyi.zhihudaily.domain.FetchStartImageUsecase; 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 SplashPresenterTest { SplashContract.View mSplashView; FetchStartImageUsecase mUsecase; SplashPresenter mPresenter; @Before public void setUp() { mSplashView = mock(SplashContract.View.class); mUsecase = mock(FetchStartImageUsecase.class); mPresenter = new SplashPresenter(mUsecase); mPresenter.attachView(mSplashView); } @Test public void testRefresh() { int width = 0; int height = 0; StartImage fakeStartImage = new StartImage(); when(mUsecase.execute()).thenReturn(Observable.just(fakeStartImage)); mPresenter.refresh(width, height); verify(mUsecase).setScreenSize(width, height); verify(mUsecase).execute(); mSplashView.showBackgroundImage(fakeStartImage); } @Test public void testRefreshError() { int width = 0; int height = 0; when(mUsecase.execute()).thenReturn(Observable.<StartImage>error(new Throwable())); mPresenter.refresh(width, height); verify(mUsecase).setScreenSize(width, height); verify(mUsecase).execute(); verify(mSplashView).showError(); } }