package com.rapidftr.adapter.pagination; import com.rapidftr.CustomTestRunner; import com.rapidftr.adapter.HighlightedFieldsViewAdapter; import com.rapidftr.model.Child; import com.rapidftr.repository.ChildRepository; import com.rapidftr.repository.ChildSearch; import org.json.JSONException; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import java.util.Arrays; import java.util.List; import static org.mockito.Matchers.anyInt; import static org.mockito.Mockito.*; @RunWith(CustomTestRunner.class) public class PaginatedSearchResultsScrollerTest { private ChildRepository repository; private HighlightedFieldsViewAdapter<Child> highlightedFieldsViewAdapter; private PaginatedSearchResultsScroller scroller; private ChildSearch childSearch; @Before public void setUp() throws Exception { this.repository = mock(ChildRepository.class); this.highlightedFieldsViewAdapter = mock(HighlightedFieldsViewAdapter.class); } @Test public void shouldLoadRecordsForNextPage() throws JSONException { childSearch = new ChildSearch("", repository, null); scroller = spy(new PaginatedSearchResultsScroller(childSearch, highlightedFieldsViewAdapter)); List<Child> children = Arrays.asList(new Child("id", "user", "{\"name\": \"Foo Bar\"}")); when(repository.getChildrenMatchingStringBetween(anyString(), anyInt(), anyInt())).thenReturn(children); doReturn(true).when(scroller).shouldQueryForMoreData(); scroller.loadRecordsForNextPage(); verify(repository, times(1)).getChildrenMatchingStringBetween(anyString(), anyInt(), anyInt()); verify(highlightedFieldsViewAdapter, times(1)).addAll(children); } @Test public void shouldNotLoadRecordsForNextPage() throws JSONException { scroller = spy(new PaginatedSearchResultsScroller(childSearch, highlightedFieldsViewAdapter)); doReturn(false).when(scroller).shouldQueryForMoreData(); scroller.loadRecordsForNextPage(); verify(repository, times(0)).getChildrenMatchingStringBetween(anyString(), anyInt(), anyInt()); verify(highlightedFieldsViewAdapter, times(0)).addAll(anyList()); } }