1
2
3
4
5 package com.jcabi.github;
6
7 import com.jcabi.http.Request;
8 import com.jcabi.http.mock.MkAnswer;
9 import com.jcabi.http.mock.MkContainer;
10 import com.jcabi.http.mock.MkGrizzlyContainer;
11 import com.jcabi.http.request.ApacheRequest;
12 import jakarta.json.Json;
13 import jakarta.json.JsonObject;
14 import java.io.IOException;
15 import java.net.HttpURLConnection;
16 import java.util.Iterator;
17 import org.hamcrest.MatcherAssert;
18 import org.hamcrest.Matchers;
19 import org.junit.jupiter.api.Assertions;
20 import org.junit.jupiter.api.Test;
21 import org.junit.jupiter.api.extension.ExtendWith;
22
23
24
25
26
27 @ExtendWith(RandomPort.class)
28 final class RtPaginationTest {
29
30
31
32
33 @Test
34 void jumpNextPage() throws IOException {
35 try (
36 MkContainer container = new MkGrizzlyContainer().next(
37 RtPaginationTest.simple("Hi Jeff")
38 .withHeader(
39 "Link",
40 "</s?page=3&per_page=100>; rel=\"next\""
41 )
42 ).next(RtPaginationTest.simple("Hi Mark"))
43 .start(RandomPort.port())
44 ) {
45 final Request request = new ApacheRequest(container.home());
46 final RtPagination<JsonObject> page = new RtPagination<>(
47 request,
48 object -> object
49 );
50 final Iterator<JsonObject> iterator = page.iterator();
51 MatcherAssert.assertThat(
52 "String does not contain expected value",
53 iterator.next().toString(),
54 Matchers.containsString("Jeff")
55 );
56 MatcherAssert.assertThat(
57 "String does not contain expected value",
58 iterator.next().toString(),
59 Matchers.containsString("Mark")
60 );
61 container.stop();
62 }
63 }
64
65 @Test
66 void throwsIfNoMoreElement() throws IOException {
67 try (
68 MkContainer container = new MkGrizzlyContainer()
69 .next(RtPaginationTest.simple("Hi there")).start(RandomPort.port())
70 ) {
71 final Request request = new ApacheRequest(container.home());
72 final RtPagination<JsonObject> page = new RtPagination<>(
73 request,
74 object -> object
75 );
76 final Iterator<JsonObject> iterator = page.iterator();
77 iterator.next();
78 Assertions.assertThrows(
79 java.util.NoSuchElementException.class,
80 iterator::next,
81 "Should throw when no more elements"
82 );
83 container.stop();
84 }
85 }
86
87
88
89
90
91
92 private static MkAnswer.Simple simple(final String msg) {
93 final String message = Json.createArrayBuilder()
94 .add(Json.createObjectBuilder().add("msg", msg))
95 .build().toString();
96 return new MkAnswer.Simple(HttpURLConnection.HTTP_OK, message);
97 }
98 }