package de.vanmar.android.yarrn.projects; import com.octo.android.robospice.SpiceManager; import com.octo.android.robospice.request.SpiceRequest; import com.octo.android.robospice.request.listener.RequestListener; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; import org.mockito.Captor; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.Robolectric; import org.robolectric.util.ActivityController; import de.vanmar.android.yarrn.FragmentFactory; import de.vanmar.android.yarrn.MainActivity; import de.vanmar.android.yarrn.MainActivity_; import de.vanmar.android.yarrn.R; import de.vanmar.android.yarrn.requests.ListProjectsRequest; import de.vanmar.android.yarrn.util.MyRobolectricTestRunner; import de.vanmar.android.yarrn.util.TestUtil; import static org.junit.Assert.assertTrue; import static org.mockito.BDDMockito.given; import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyInt; import static org.mockito.Matchers.anyString; import static org.mockito.Mockito.reset; import static org.mockito.Mockito.verify; @RunWith(MyRobolectricTestRunner.class) public class ProjectsFragmentUnitTest { @Mock private FragmentFactory fragmentFactory; @Mock private SpiceManager spiceManager; @Captor private ArgumentCaptor<ListProjectsRequest> request; private ProjectsFragment projectsFragment; private MainActivity activity; @Before public void prepare() { MockitoAnnotations.initMocks(this); TestUtil.mockBackgroundExecutor(); projectsFragment = new ProjectsFragment_(); projectsFragment.spiceManager = this.spiceManager; ActivityController<MainActivity_> activityController = Robolectric.buildActivity(MainActivity_.class).create(); activity = activityController.get(); projectsFragment.prefs = activity.prefs; TestUtil.mockValidUser(activity.prefs); activity.fragmentFactory = this.fragmentFactory; given(fragmentFactory.getProjectsFragment()).willReturn(projectsFragment); activityController.start().resume(); } @Test public void shouldLoadAndDisplayList() { // when (starting) // then verify(spiceManager).execute(any(SpiceRequest.class), anyString(), anyInt(), any(RequestListener.class)); } @Test public void shouldAcceptSortOrders() { // given reset(spiceManager); assertTrue(activity.getResources().getStringArray(R.array.project_sort_option_values)[2].equals("happiness")); // when projectsFragment.sort.setSelection(2); projectsFragment.sort.getOnItemSelectedListener().onItemSelected(projectsFragment.sort, null, 2, 0); // then verify(spiceManager).execute(request.capture(), anyString(), anyInt(), any(RequestListener.class)); assertTrue(request.getValue().getCacheKey().toString().contains("sort=happiness")); // when reset(spiceManager); projectsFragment.sortReverse.setChecked(true); // then verify(spiceManager).execute(request.capture(), anyString(), anyInt(), any(RequestListener.class)); assertTrue(request.getValue().getCacheKey().toString().contains("sort=happiness_")); } }