package com.tevinjeffrey.rutgersct.ui.trackedsections; import com.tevinjeffrey.rutgersct.rutgersapi.model.Course; import com.tevinjeffrey.rutgersct.ui.base.View; import com.tevinjeffrey.rutgersct.ui.trackedsections.TrackedSectionsView; import com.tevinjeffrey.rutgersct.ui.trackedsections.TrackedSectionsViewState; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import java.util.List; import static org.mockito.Matchers.anyListOf; import static org.mockito.Mockito.anyList; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; @RunWith(MockitoJUnitRunner.class) public class TrackedSectionsViewTest { @Mock //Injected via @RunWith(MockitoJUnitRunner.class) TrackedSectionsView mockTrackedSectionsView; TrackedSectionsViewState viewState; @Before public void setUp() throws Exception { viewState = new TrackedSectionsViewState(); } @Test public void TestEssentialViewInit() throws Exception { viewState.apply(mockTrackedSectionsView, true); verify(mockTrackedSectionsView).initRecyclerView(); verify(mockTrackedSectionsView).initSwipeLayout(); verify(mockTrackedSectionsView).initToolbar(); } @Test public void ShowLoading_GivenIsLoading() throws Exception { viewState.isRefreshing = true; viewState.apply(mockTrackedSectionsView, true); verify(mockTrackedSectionsView).showLoading(true); } @Test public void ShowData_GivenSomeData() throws Exception { viewState.data = mock(List.class); viewState.apply(mockTrackedSectionsView, true); verify(mockTrackedSectionsView).setData(anyListOf(Course.Section.class)); } @Test public void ShowLayout_Empty() throws Exception { viewState.layoutType = View.LayoutType.EMPTY; viewState.apply(mockTrackedSectionsView, true); verify(mockTrackedSectionsView).showLayout(View.LayoutType.EMPTY); } @Test public void ShowLayout_List() throws Exception { viewState.layoutType = View.LayoutType.LIST; viewState.apply(mockTrackedSectionsView, true); verify(mockTrackedSectionsView).showLayout(View.LayoutType.LIST); } @Test public void ShowLayout_Error() throws Exception { viewState.layoutType = View.LayoutType.ERROR; viewState.apply(mockTrackedSectionsView, true); verify(mockTrackedSectionsView).showLayout(View.LayoutType.ERROR); } }