package com.hitherejoe.androidboilerplate; import com.hitherejoe.androidboilerplate.data.DataManager; import com.hitherejoe.androidboilerplate.data.local.PreferencesHelper; import com.hitherejoe.androidboilerplate.data.model.Character; import com.hitherejoe.androidboilerplate.data.remote.AndroidBoilerplateService; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import java.util.List; import rx.Observable; import rx.observers.TestSubscriber; import static org.mockito.Mockito.when; @RunWith(MockitoJUnitRunner.class) public class DataManagerTest { @Mock AndroidBoilerplateService mMockAndroidBoilerplateService; @Mock PreferencesHelper mMockPreferencesHelper; DataManager mDataManager; @Before public void setUp() { mDataManager = new DataManager(mMockAndroidBoilerplateService, mMockPreferencesHelper); } @Test public void shouldLoadCharacters() throws Exception { int[] ids = new int[]{10034, 14050, 10435, 35093}; List<Character> characters = MockModelFabric.makeListOfMockCharacters(4); for (int i = 0; i < ids.length; i++) { when(mMockAndroidBoilerplateService.getCharacter(ids[i])) .thenReturn(Observable.just(characters.get(i))); } TestSubscriber<List<Character>> result = new TestSubscriber<>(); mDataManager.getCharacters(ids).subscribe(result); result.assertNoErrors(); result.assertValue(characters); } }