diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/BasicCollectionToDtoMapper.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/BasicCollectionToDtoMapper.java index dfa8702849..4700d22841 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/BasicCollectionToDtoMapper.java +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/BasicCollectionToDtoMapper.java @@ -39,9 +39,18 @@ abstract class BasicCollectionToDtoMapper pageResult) { + if (pageResult.getOverallCount() % pageSize > 0) { + return pageResult.getOverallCount() / pageSize + 1; + } else { + return pageResult.getOverallCount() / pageSize; + } + } + private Links createLinks(NumberedPaging page) { String baseUrl = createSelfLink(); diff --git a/scm-webapp/src/test/java/sonia/scm/api/v2/resources/UserCollectionToDtoMapperTest.java b/scm-webapp/src/test/java/sonia/scm/api/v2/resources/UserCollectionToDtoMapperTest.java index 93cacaaf6d..4fb9402dfc 100644 --- a/scm-webapp/src/test/java/sonia/scm/api/v2/resources/UserCollectionToDtoMapperTest.java +++ b/scm-webapp/src/test/java/sonia/scm/api/v2/resources/UserCollectionToDtoMapperTest.java @@ -119,6 +119,30 @@ public class UserCollectionToDtoMapperTest { assertEquals("Wurst", ((UserDto) users.get(1)).getName()); } + @Test + public void shouldCreatePageTotal_forSparsePages() { + PageResult 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 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 pageResult = createPage(createUsers(), 0, 1); + + CollectionDto collectionDto = mapper.map(0, 1, pageResult); + assertEquals(0, collectionDto.getPageTotal()); + } + private PageResult mockPageResult(String... userNames) { return createPage(createUsers(userNames), 0, userNames.length); }