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.JdkRequest;
12 import com.jcabi.immutable.ArrayMap;
13 import jakarta.json.Json;
14 import jakarta.json.JsonObject;
15 import java.io.IOException;
16 import java.net.HttpURLConnection;
17 import java.util.EnumMap;
18 import org.hamcrest.MatcherAssert;
19 import org.hamcrest.Matchers;
20 import org.junit.jupiter.api.Test;
21 import org.junit.jupiter.api.extension.ExtendWith;
22 import org.mockito.Mockito;
23
24
25
26
27
28
29 @ExtendWith(RandomPort.class)
30 final class RtIssuesTest {
31
32
33
34
35
36 @Test
37 void createIssue() throws IOException {
38 final String title = "Found a bug";
39 final String body = RtIssuesTest.issue(title).toString();
40 try (
41 MkContainer container = new MkGrizzlyContainer().next(
42 new MkAnswer.Simple(HttpURLConnection.HTTP_CREATED, body)
43 ).next(new MkAnswer.Simple(HttpURLConnection.HTTP_OK, body))
44 .start(RandomPort.port())
45 ) {
46 final RtIssues issues = new RtIssues(
47 new JdkRequest(container.home()),
48 RtIssuesTest.repo()
49 );
50 final Issue issue = issues.create(
51 title, "having a problem with it."
52 );
53 MatcherAssert.assertThat(
54 "Values are not equal",
55 container.take().method(),
56 Matchers.equalTo(Request.POST)
57 );
58 MatcherAssert.assertThat(
59 "Values are not equal",
60 new Issue.Smart(issue).title(),
61 Matchers.equalTo(title)
62 );
63 container.stop();
64 }
65 }
66
67 @Test
68 void getSingleIssue() throws IOException {
69 final String title = "Unit test";
70 try (
71 MkContainer container = new MkGrizzlyContainer().next(
72 new MkAnswer.Simple(
73 HttpURLConnection.HTTP_OK,
74 RtIssuesTest.issue(title).toString()
75 )
76 ).start(RandomPort.port())
77 ) {
78 final RtIssues issues = new RtIssues(
79 new JdkRequest(container.home()),
80 RtIssuesTest.repo()
81 );
82 final Issue issue = issues.get(1);
83 MatcherAssert.assertThat(
84 "Values are not equal",
85 new Issue.Smart(issue).title(),
86 Matchers.equalTo(title)
87 );
88 container.stop();
89 }
90 }
91
92 @Test
93 void iterateIssues() throws IOException {
94 try (
95 MkContainer container = new MkGrizzlyContainer().next(
96 new MkAnswer.Simple(
97 HttpURLConnection.HTTP_OK,
98 Json.createArrayBuilder()
99 .add(RtIssuesTest.issue("new issue"))
100 .add(RtIssuesTest.issue("code issue"))
101 .build().toString()
102 )
103 ).start(RandomPort.port())
104 ) {
105 final RtIssues issues = new RtIssues(
106 new JdkRequest(container.home()),
107 RtIssuesTest.repo()
108 );
109 MatcherAssert.assertThat(
110 "Collection size is incorrect",
111 issues.iterate(new ArrayMap<>()),
112 Matchers.iterableWithSize(2)
113 );
114 container.stop();
115 }
116 }
117
118 @Test
119 void searchIssues() throws IOException {
120 try (
121 MkContainer container = new MkGrizzlyContainer().next(
122 new MkAnswer.Simple(
123 HttpURLConnection.HTTP_OK,
124 Json.createArrayBuilder()
125 .add(RtIssuesTest.issue("some issue"))
126 .add(RtIssuesTest.issue("some other issue"))
127 .build().toString()
128 )
129 ).start(RandomPort.port())
130 ) {
131 final RtIssues issues = new RtIssues(
132 new JdkRequest(container.home()),
133 RtIssuesTest.repo()
134 );
135 MatcherAssert.assertThat(
136 "Collection size is incorrect",
137 issues.search(
138 Issues.Sort.UPDATED,
139 Search.Order.ASC,
140 new EnumMap<>(
141 Issues.Qualifier.class
142 )
143 ),
144 Matchers.iterableWithSize(2)
145 );
146 container.stop();
147 }
148 }
149
150
151
152
153
154
155 private static JsonObject issue(final String title) {
156 return Json.createObjectBuilder()
157 .add("number", 1)
158 .add("state", Issue.OPEN_STATE)
159 .add("title", title)
160 .build();
161 }
162
163
164
165
166
167 private static Repo repo() {
168 final Repo repo = Mockito.mock(Repo.class);
169 Mockito.doReturn(new Coordinates.Simple("mark", "test"))
170 .when(repo).coordinates();
171 return repo;
172 }
173 }