From 2b9f5de9e07c241c4e150e1cef84700447cafdea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Pfeuffer?= Date: Tue, 26 Jun 2018 12:19:41 +0200 Subject: [PATCH] Fix total page count --- .../resources/BasicCollectionToDtoMapper.java | 9 +++++++ .../UserCollectionToDtoMapperTest.java | 24 +++++++++++++++++++ 2 files changed, 33 insertions(+) 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); }