18
18
import static org .hamcrest .Matchers .*;
19
19
import static org .junit .Assert .*;
20
20
21
+ import java .net .URI ;
21
22
import java .util .Arrays ;
22
23
import java .util .Collection ;
23
24
import java .util .Collections ;
25
+ import java .util .Map ;
24
26
25
27
import org .junit .Before ;
26
28
import org .junit .Test ;
@@ -168,6 +170,25 @@ public void appendsMissingTemplateParametersToLink() {
168
170
assertThat (assembler .appendPaginationParameterTemplates (link ), is (new Link ("/foo?page=0{&size,sort}" )));
169
171
}
170
172
173
+ /**
174
+ * @see DATAMCNS-563
175
+ */
176
+ @ Test
177
+ public void createsPaginationLinksForOneIndexedArgumentResolverCorrectly () {
178
+
179
+ HateoasPageableHandlerMethodArgumentResolver argumentResolver = new HateoasPageableHandlerMethodArgumentResolver ();
180
+ argumentResolver .setOneIndexedParameters (true );
181
+
182
+ PagedResourcesAssembler <Person > assembler = new PagedResourcesAssembler <Person >(argumentResolver , null );
183
+ PagedResources <Resource <Person >> resource = assembler .toResource (createPage (1 ));
184
+
185
+ assertThat (resource .hasLink ("prev" ), is (true ));
186
+ assertThat (resource .hasLink ("next" ), is (true ));
187
+
188
+ assertThat (getQueryParameters (resource .getLink ("prev" )), hasEntry ("page" , "1" ));
189
+ assertThat (getQueryParameters (resource .getLink ("next" )), hasEntry ("page" , "3" ));
190
+ }
191
+
171
192
private static Page <Person > createPage (int index ) {
172
193
173
194
AbstractPageRequest request = new PageRequest (index , 1 );
@@ -178,6 +199,12 @@ private static Page<Person> createPage(int index) {
178
199
return new PageImpl <Person >(Arrays .asList (person ), request , 3 );
179
200
}
180
201
202
+ private static Map <String , String > getQueryParameters (Link link ) {
203
+
204
+ UriComponents uriComponents = UriComponentsBuilder .fromUri (URI .create (link .expand ().getHref ())).build ();
205
+ return uriComponents .getQueryParams ().toSingleValueMap ();
206
+ }
207
+
181
208
static class Person {
182
209
String name ;
183
210
}
0 commit comments