From 127747f3fb6f72c1ec431517ed172723748551cd Mon Sep 17 00:00:00 2001 From: Oliver Gierke Date: Fri, 30 Jan 2015 14:39:17 +0100 Subject: [PATCH] DATACMNS-563 - Added explicit unit test for one-indexed parameters on PagedResourcesAssembler. --- .../web/PagedResourcesAssemblerUnitTests.java | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/test/java/org/springframework/data/web/PagedResourcesAssemblerUnitTests.java b/src/test/java/org/springframework/data/web/PagedResourcesAssemblerUnitTests.java index 9876dd34b..4c56397af 100644 --- a/src/test/java/org/springframework/data/web/PagedResourcesAssemblerUnitTests.java +++ b/src/test/java/org/springframework/data/web/PagedResourcesAssemblerUnitTests.java @@ -18,9 +18,11 @@ package org.springframework.data.web; import static org.hamcrest.Matchers.*; import static org.junit.Assert.*; +import java.net.URI; import java.util.Arrays; import java.util.Collection; import java.util.Collections; +import java.util.Map; import org.junit.Before; import org.junit.Test; @@ -183,6 +185,25 @@ public class PagedResourcesAssemblerUnitTests { assertThat(result.getVariableNames(), hasItems("projection", "size", "sort")); } + /** + * @see DATAMCNS-563 + */ + @Test + public void createsPaginationLinksForOneIndexedArgumentResolverCorrectly() { + + HateoasPageableHandlerMethodArgumentResolver argumentResolver = new HateoasPageableHandlerMethodArgumentResolver(); + argumentResolver.setOneIndexedParameters(true); + + PagedResourcesAssembler assembler = new PagedResourcesAssembler(argumentResolver, null); + PagedResources> resource = assembler.toResource(createPage(1)); + + assertThat(resource.hasLink("prev"), is(true)); + assertThat(resource.hasLink("next"), is(true)); + + assertThat(getQueryParameters(resource.getLink("prev")), hasEntry("page", "1")); + assertThat(getQueryParameters(resource.getLink("next")), hasEntry("page", "3")); + } + private static Page createPage(int index) { AbstractPageRequest request = new PageRequest(index, 1); @@ -193,6 +214,12 @@ public class PagedResourcesAssemblerUnitTests { return new PageImpl(Arrays.asList(person), request, 3); } + private static Map getQueryParameters(Link link) { + + UriComponents uriComponents = UriComponentsBuilder.fromUri(URI.create(link.expand().getHref())).build(); + return uriComponents.getQueryParams().toSingleValueMap(); + } + static class Person { String name; }