@Test public void shouldInitializePaginationOptionWithOffset0ForFirstPage() { Map<String, String> parameters = new HashMap<>(); Paginator paginator = new Paginator(parameters, scheme, parser); when(scheme.nextPage(eq(parameters), any(Page.class))).thenReturn("testresponse"); when(parser.parse("testresponse")) .thenReturn(new PaginatedResponse(null, new PaginatedResponseMeta(null, null, null, 0))); paginator.nextPage(); ArgumentCaptor<Page> optionCaptor = ArgumentCaptor.forClass(Page.class); verify(scheme).nextPage(eq(parameters), optionCaptor.capture()); Page paginationOption = optionCaptor.getValue(); assertEquals(100, paginationOption.getLimit()); assertEquals(0, paginationOption.getOffset()); }
@Test public void shouldOverrideDefaultLimitAndOffsetIfProvidedInParams() { Map<String, String> parameters = new HashMap<String, String>() { { put(Constants.OFFSET, "2000"); put(Constants.LIMIT, "1000"); } }; Paginator paginator = new Paginator(parameters, scheme, parser); when(scheme.nextPage(eq(parameters), any(Page.class))).thenReturn("testresponse"); when(parser.parse("testresponse")) .thenReturn(new PaginatedResponse(null, new PaginatedResponseMeta(null, null, null, 0))); paginator.nextPage(); paginator.nextPage(); ArgumentCaptor<Page> optionCaptor = ArgumentCaptor.forClass(Page.class); verify(scheme).nextPage(eq(parameters), optionCaptor.capture()); assertEquals(2000, optionCaptor.getValue().getOffset()); assertEquals(1000, optionCaptor.getValue().getLimit()); }