Fix total page count

This commit is contained in:
René Pfeuffer
2018-06-26 12:19:41 +02:00
parent d55fa508b9
commit 2b9f5de9e0
2 changed files with 33 additions and 0 deletions

View File

@@ -39,9 +39,18 @@ abstract class BasicCollectionToDtoMapper<E extends ModelObject, D extends HalRe
embedDtos(dtos)
);
collectionDto.setPage(pageNumber);
collectionDto.setPageTotal(computePageTotal(pageSize, pageResult));
return collectionDto;
}
private int computePageTotal(int pageSize, PageResult<E> pageResult) {
if (pageResult.getOverallCount() % pageSize > 0) {
return pageResult.getOverallCount() / pageSize + 1;
} else {
return pageResult.getOverallCount() / pageSize;
}
}
private Links createLinks(NumberedPaging page) {
String baseUrl = createSelfLink();

View File

@@ -119,6 +119,30 @@ public class UserCollectionToDtoMapperTest {
assertEquals("Wurst", ((UserDto) users.get(1)).getName());
}
@Test
public void shouldCreatePageTotal_forSparsePages() {
PageResult<User> pageResult = createPage(createUsers("Hannes", "Karl", "Piet"), 0, 1);
CollectionDto collectionDto = mapper.map(0, 2, pageResult);
assertEquals(2, collectionDto.getPageTotal());
}
@Test
public void shouldCreatePageTotal_forCompletePages() {
PageResult<User> pageResult = createPage(createUsers("Hannes", "Karl", "Piet", "Hein"), 0, 1);
CollectionDto collectionDto = mapper.map(0, 2, pageResult);
assertEquals(2, collectionDto.getPageTotal());
}
@Test
public void shouldCreatePageTotal_forNoPages() {
PageResult<User> pageResult = createPage(createUsers(), 0, 1);
CollectionDto collectionDto = mapper.map(0, 1, pageResult);
assertEquals(0, collectionDto.getPageTotal());
}
private PageResult<User> mockPageResult(String... userNames) {
return createPage(createUsers(userNames), 0, userNames.length);
}