diff --git a/src/test/java/org/springframework/data/web/PagedResourcesAssemblerUnitTests.java b/src/test/java/org/springframework/data/web/PagedResourcesAssemblerUnitTests.java index 82723cdb7..dbc97f5b1 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; @@ -168,6 +170,25 @@ public class PagedResourcesAssemblerUnitTests { assertThat(assembler.appendPaginationParameterTemplates(link), is(new Link("/foo?page=0{&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); @@ -178,6 +199,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; }