1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 package com.jcabi.github;
31
32 import com.jcabi.http.Request;
33 import com.jcabi.http.mock.MkAnswer;
34 import com.jcabi.http.mock.MkContainer;
35 import com.jcabi.http.mock.MkGrizzlyContainer;
36 import com.jcabi.http.request.ApacheRequest;
37 import java.net.HttpURLConnection;
38 import java.util.Iterator;
39 import java.util.NoSuchElementException;
40 import javax.json.Json;
41 import javax.json.JsonObject;
42 import org.hamcrest.MatcherAssert;
43 import org.hamcrest.Matchers;
44 import org.junit.Rule;
45 import org.junit.Test;
46
47
48
49
50
51
52
53 public final class RtPaginationTest {
54
55
56
57
58 @Rule
59 public final transient RandomPort resource = new RandomPort();
60
61
62
63
64
65
66 @Test
67 public void jumpNextPage() throws Exception {
68 try (
69 final MkContainer container = new MkGrizzlyContainer().next(
70 RtPaginationTest.simple("Hi Jeff")
71 .withHeader(
72 "Link",
73 "</s?page=3&per_page=100>; rel=\"next\""
74 )
75 ).next(RtPaginationTest.simple("Hi Mark"))
76 .start(this.resource.port())
77 ) {
78 final Request request = new ApacheRequest(container.home());
79 final RtPagination<JsonObject> page = new RtPagination<JsonObject>(
80 request,
81 new RtValuePagination.Mapping<JsonObject, JsonObject>() {
82 @Override
83 public JsonObject map(final JsonObject object) {
84 return object;
85 }
86 }
87 );
88 final Iterator<JsonObject> iterator = page.iterator();
89 MatcherAssert.assertThat(
90 iterator.next().toString(),
91 Matchers.containsString("Jeff")
92 );
93 MatcherAssert.assertThat(
94 iterator.next().toString(),
95 Matchers.containsString("Mark")
96 );
97 container.stop();
98 }
99 }
100
101
102
103
104
105
106 @Test(expected = NoSuchElementException.class)
107 public void throwsIfNoMoreElement() throws Exception {
108 try (
109 final MkContainer container = new MkGrizzlyContainer()
110 .next(simple("Hi there")).start(this.resource.port())
111 ) {
112 final Request request = new ApacheRequest(container.home());
113 final RtPagination<JsonObject> page = new RtPagination<JsonObject>(
114 request,
115 new RtValuePagination.Mapping<JsonObject, JsonObject>() {
116 @Override
117 public JsonObject map(final JsonObject object) {
118 return object;
119 }
120 }
121 );
122 final Iterator<JsonObject> iterator = page.iterator();
123 iterator.next();
124 MatcherAssert.assertThat(
125 iterator.next(),
126 Matchers.notNullValue()
127 );
128 container.stop();
129 }
130 }
131
132
133
134
135
136
137
138 private static MkAnswer.Simple simple(final String msg) throws Exception {
139 final String message = Json.createArrayBuilder()
140 .add(Json.createObjectBuilder().add("msg", msg))
141 .build().toString();
142 return new MkAnswer.Simple(HttpURLConnection.HTTP_OK, message);
143 }
144 }