package io.hefuyi.zhihudaily.mvp.domain; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.Robolectric; import org.robolectric.RobolectricTestRunner; import org.robolectric.annotation.Config; import java.text.SimpleDateFormat; import java.util.Date; import io.hefuyi.zhihudaily.BuildConfig; import io.hefuyi.zhihudaily.DailyApplication; import io.hefuyi.zhihudaily.domain.FetchBeforeDailyStoriesUsecase; import io.hefuyi.zhihudaily.domain.FetchLatestDailyStoriesUsecase; import io.hefuyi.zhihudaily.domain.FetchStartImageUsecase; import io.hefuyi.zhihudaily.domain.FetchStoryDetailUsecase; import io.hefuyi.zhihudaily.domain.FetchThemeBeforeStoryUsecase; import io.hefuyi.zhihudaily.domain.FetchThemeUsecase; import io.hefuyi.zhihudaily.domain.FetchThemesUsecase; import io.hefuyi.zhihudaily.mvp.TestUtils; import io.hefuyi.zhihudaily.mvp.model.DailyStories; import io.hefuyi.zhihudaily.mvp.model.StartImage; import io.hefuyi.zhihudaily.mvp.model.Story; import io.hefuyi.zhihudaily.mvp.model.Theme; import io.hefuyi.zhihudaily.mvp.model.Themes; import io.hefuyi.zhihudaily.ui.activity.GuiderActivity; import io.hefuyi.zhihudaily.util.DensityUtil; import rx.observers.TestSubscriber; /** * Created by hefuyi on 16/9/5. */ @RunWith(RobolectricTestRunner.class) @Config(constants = BuildConfig.class,application = DailyApplication.class) public class UsecaseTest { @Test public void testFetchBeforeDailyStoriesUseCase() { SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd"); String date = format.format(new Date(System.currentTimeMillis()-24*60*60*1000)); FetchBeforeDailyStoriesUsecase fetchBeforeDailyStoriesUsecase= new FetchBeforeDailyStoriesUsecase(TestUtils.getRepository()); fetchBeforeDailyStoriesUsecase.setDate(date); TestSubscriber<DailyStories> testSubscriber = new TestSubscriber<>(); fetchBeforeDailyStoriesUsecase.execute().subscribe(testSubscriber); testSubscriber.assertNoErrors(); testSubscriber.assertValueCount(1); } @Test public void testFetchLatestDailyStoriesUsecase() { FetchLatestDailyStoriesUsecase fetchLatestDailyStoriesUsecase = new FetchLatestDailyStoriesUsecase(TestUtils.getRepository()); TestSubscriber<DailyStories> testSubscriber = new TestSubscriber<>(); fetchLatestDailyStoriesUsecase.execute().subscribe(testSubscriber); testSubscriber.assertNoErrors(); testSubscriber.assertValueCount(1); } @Test public void testFetchStartImageUsecase() { int width = DensityUtil.getScreenWidth(Robolectric.setupActivity(GuiderActivity.class)); int height = DensityUtil.getScreenHeightWithDecorations(Robolectric.setupActivity(GuiderActivity.class)); FetchStartImageUsecase fetchStartImageUsecase = new FetchStartImageUsecase(TestUtils.getRepository()); fetchStartImageUsecase.setScreenSize(width, height); TestSubscriber<StartImage> testSubscriber = new TestSubscriber<>(); fetchStartImageUsecase.execute().subscribe(testSubscriber); testSubscriber.assertNoErrors(); testSubscriber.assertValueCount(1); } @Test public void testFetchStoryDetailUsecase() { FetchLatestDailyStoriesUsecase fetchLatestDailyStoriesUsecase = new FetchLatestDailyStoriesUsecase(TestUtils.getRepository()); TestSubscriber<DailyStories> dailyStoriesTestSubscriber = new TestSubscriber<>(); fetchLatestDailyStoriesUsecase.execute().subscribe(dailyStoriesTestSubscriber); String storyId = dailyStoriesTestSubscriber.getOnNextEvents().get(0).getStories().get(0).getId(); FetchStoryDetailUsecase fetchStoryDetailUsecase = new FetchStoryDetailUsecase(TestUtils.getRepository()); fetchStoryDetailUsecase.setStoryId(storyId); TestSubscriber<Story> storyTestSubscriber = new TestSubscriber<>(); fetchStoryDetailUsecase.execute().subscribe(storyTestSubscriber); storyTestSubscriber.assertNoErrors(); storyTestSubscriber.assertValueCount(1); } @Test public void testFetchThemesUsecase() { FetchThemesUsecase fetchThemesUsecases = new FetchThemesUsecase(TestUtils.getRepository()); TestSubscriber<Themes> testSubscriber = new TestSubscriber<>(); fetchThemesUsecases.execute().subscribe(testSubscriber); testSubscriber.assertNoErrors(); testSubscriber.assertValueCount(1); } @Test public void testFetchThemeUsecase() { FetchThemesUsecase fetchThemesUsecases = new FetchThemesUsecase(TestUtils.getRepository()); TestSubscriber<Themes> testSubscriber = new TestSubscriber<>(); fetchThemesUsecases.execute().subscribe(testSubscriber); String themeId = testSubscriber.getOnNextEvents().get(0).getOthers().get(0).getId(); FetchThemeUsecase fetchThemeUsecase = new FetchThemeUsecase(TestUtils.getRepository()); fetchThemeUsecase.setThemeId(themeId); TestSubscriber<Theme> themeTestSubscriber = new TestSubscriber<>(); fetchThemeUsecase.execute().subscribe(themeTestSubscriber); themeTestSubscriber.assertNoErrors(); themeTestSubscriber.assertValueCount(1); } @Test public void testFetchThemeBeforeStoryUsecase() { FetchThemesUsecase fetchThemesUsecases = new FetchThemesUsecase(TestUtils.getRepository()); TestSubscriber<Themes> testSubscriber = new TestSubscriber<>(); fetchThemesUsecases.execute().subscribe(testSubscriber); String themeId = testSubscriber.getOnNextEvents().get(0).getOthers().get(0).getId(); FetchThemeUsecase fetchThemeUsecase = new FetchThemeUsecase(TestUtils.getRepository()); fetchThemeUsecase.setThemeId(themeId); TestSubscriber<Theme> themeTestSubscriber = new TestSubscriber<>(); fetchThemeUsecase.execute().subscribe(themeTestSubscriber); int storyCount = themeTestSubscriber.getOnNextEvents().get(0).getStories().size(); String storyId = themeTestSubscriber.getOnNextEvents().get(0).getStories().get(storyCount - 1).getId(); FetchThemeBeforeStoryUsecase fetchThemeBeforeStoryUsecase = new FetchThemeBeforeStoryUsecase(TestUtils.getRepository()); fetchThemeBeforeStoryUsecase.setStoryId(storyId); fetchThemeBeforeStoryUsecase.setThemeId(themeId); fetchThemeBeforeStoryUsecase.execute().subscribe(themeTestSubscriber); themeTestSubscriber.assertNoErrors(); themeTestSubscriber.assertValueCount(1); } @Test public void testActivity() { GuiderActivity testActivity = Robolectric.setupActivity(GuiderActivity.class); } }