1
2
3
4
5 package com.jcabi.github;
6
7 import jakarta.json.Json;
8 import jakarta.json.JsonValue;
9 import java.io.IOException;
10 import java.text.ParseException;
11 import org.hamcrest.MatcherAssert;
12 import org.hamcrest.Matchers;
13 import org.junit.jupiter.api.Test;
14 import org.mockito.Mockito;
15
16
17
18
19
20
21 @SuppressWarnings({"PMD.TooManyMethods", "PMD.AvoidDuplicateLiterals"})
22 final class ReleaseTest {
23
24 @Test
25 void fetchesUrls() throws IOException {
26 final Release release = Mockito.mock(Release.class);
27 final String url = "http://url";
28 Mockito.doReturn(
29 Json.createObjectBuilder()
30 .add("url", url)
31 .build()
32 ).when(release).json();
33 final Release.Smart smart = new Release.Smart(release);
34 MatcherAssert.assertThat(
35 "Values are not equal",
36 smart.url().toString(),
37 Matchers.equalTo(url)
38 );
39 }
40
41 @Test
42 void fetchesHtmlUrls() throws IOException {
43 final Release release = Mockito.mock(Release.class);
44 final String htmlurl = "http://html_url";
45 Mockito.doReturn(
46 Json.createObjectBuilder()
47 .add("html_url", htmlurl)
48 .build()
49 ).when(release).json();
50 final Release.Smart smart = new Release.Smart(release);
51 MatcherAssert.assertThat(
52 "Values are not equal",
53 smart.htmlUrl().toString(),
54 Matchers.equalTo(htmlurl)
55 );
56 }
57
58 @Test
59 void fetchesAssetsHtmlUrls() throws IOException {
60 final Release release = Mockito.mock(Release.class);
61 final String assetsurl = "http://assets_url";
62 Mockito.doReturn(
63 Json.createObjectBuilder()
64 .add("assets_url", assetsurl)
65 .build()
66 ).when(release).json();
67 final Release.Smart smart = new Release.Smart(release);
68 MatcherAssert.assertThat(
69 "Values are not equal",
70 smart.assetsUrl().toString(),
71 Matchers.equalTo(assetsurl)
72 );
73 }
74
75 @Test
76 void fetchesUploadHtmlUrls() throws IOException {
77 final Release release = Mockito.mock(Release.class);
78 final String uploadurl = "http://upload_url";
79 Mockito.doReturn(
80 Json.createObjectBuilder()
81 .add("upload_url", uploadurl)
82 .build()
83 ).when(release).json();
84 final Release.Smart smart = new Release.Smart(release);
85 MatcherAssert.assertThat(
86 "Values are not equal",
87 smart.uploadUrl().toString(),
88 Matchers.equalTo(uploadurl)
89 );
90 }
91
92 @Test
93 void testId() {
94 final Release release = Mockito.mock(Release.class);
95 Mockito.doReturn(1).when(release).number();
96 final Release.Smart smart = new Release.Smart(release);
97 MatcherAssert.assertThat(
98 "Values are not equal",
99 smart.number(),
100 Matchers.equalTo(1)
101 );
102 }
103
104 @Test
105 void fetchTag() throws IOException {
106 final Release release = Mockito.mock(Release.class);
107 final String tag = "v1.0.0";
108 Mockito.doReturn(
109 Json.createObjectBuilder()
110 .add("tag_name", tag)
111 .build()
112 ).when(release).json();
113 final Release.Smart smart = new Release.Smart(release);
114 MatcherAssert.assertThat(
115 "Values are not equal",
116 smart.tag(),
117 Matchers.equalTo(tag)
118 );
119 }
120
121 @Test
122 void fetchProperties() throws IOException {
123 final Release release = Mockito.mock(Release.class);
124 final String master = "master";
125 Mockito.doReturn(
126 Json.createObjectBuilder()
127 .add("target_commitish", master)
128 .build()
129 ).when(release).json();
130 final Release.Smart smart = new Release.Smart(release);
131 MatcherAssert.assertThat(
132 "Values are not equal",
133 smart.commitish(),
134 Matchers.equalTo(master)
135 );
136 }
137
138 @Test
139 void fetchName() throws IOException {
140 final Release release = Mockito.mock(Release.class);
141 final String name = "v1";
142
143 Mockito.doReturn(
144 Json.createObjectBuilder()
145 .add("name", name)
146 .build()
147 ).when(release).json();
148 final Release.Smart smart = new Release.Smart(release);
149 MatcherAssert.assertThat(
150 "Values are not equal",
151 smart.hasName(),
152 Matchers.is(true)
153 );
154 MatcherAssert.assertThat(
155 "Values are not equal",
156 smart.name(),
157 Matchers.equalTo(name)
158 );
159 }
160
161
162
163
164
165 @Test
166 void indicatesNoName() throws IOException {
167 final Release release = Mockito.mock(Release.class);
168 Mockito.doReturn(
169 Json.createObjectBuilder()
170 .add("name", JsonValue.NULL)
171 .build()
172 ).when(release).json();
173 final Release.Smart smart = new Release.Smart(release);
174 MatcherAssert.assertThat(
175 "Values are not equal",
176 smart.hasName(),
177 Matchers.is(false)
178 );
179 }
180
181 @Test
182 void fetchBody() throws IOException {
183 final Release release = Mockito.mock(Release.class);
184 final String description = "Description of the release";
185 Mockito.doReturn(
186 Json.createObjectBuilder()
187 .add("body", description)
188 .build()
189 ).when(release).json();
190 final Release.Smart smart = new Release.Smart(release);
191 MatcherAssert.assertThat(
192 "Values are not equal",
193 smart.body(),
194 Matchers.equalTo(description)
195 );
196 }
197
198 @Test
199 void fetchDescription() throws IOException, ParseException {
200 final Release release = Mockito.mock(Release.class);
201 final String created = "2013-02-27T19:35:32Z";
202 Mockito.doReturn(
203 Json.createObjectBuilder()
204 .add("created_at", created)
205 .build()
206 ).when(release).json();
207 final Release.Smart smart = new Release.Smart(release);
208 MatcherAssert.assertThat(
209 "Values are not equal",
210 smart.createdAt(),
211 Matchers.equalTo(new GitHub.Time(created).date())
212 );
213 }
214
215 @Test
216 void fetchPublished() throws IOException, ParseException {
217 final Release release = Mockito.mock(Release.class);
218 final String published = "2013-01-27T19:35:32Z";
219 Mockito.doReturn(
220 Json.createObjectBuilder()
221 .add("published_at", published)
222 .build()
223 ).when(release).json();
224 final Release.Smart smart = new Release.Smart(release);
225 MatcherAssert.assertThat(
226 "Values are not equal",
227 smart.publishedAt(),
228 Matchers.equalTo(new GitHub.Time(published).date())
229 );
230 }
231
232 @Test
233 void isPrerelease() throws IOException {
234 final Release release = Mockito.mock(Release.class);
235 Mockito.doReturn(
236 Json.createObjectBuilder().add("prerelease", Boolean.TRUE).build()
237 ).when(release).json();
238 MatcherAssert.assertThat(
239 "Values are not equal",
240 new Release.Smart(release).prerelease(),
241 Matchers.is(Boolean.TRUE)
242 );
243 }
244
245 @Test
246 void isNotPrerelease() throws IOException {
247 final Release release = Mockito.mock(Release.class);
248 Mockito.doReturn(
249 Json.createObjectBuilder().add("prerelease", "false").build()
250 ).when(release).json();
251 MatcherAssert.assertThat(
252 "Values are not equal",
253 new Release.Smart(release).prerelease(),
254 Matchers.is(Boolean.FALSE)
255 );
256 }
257
258 @Test
259 void missingPrerelease() throws IOException {
260 final Release release = Mockito.mock(Release.class);
261 Mockito.doReturn(
262 Json.createObjectBuilder().build()
263 ).when(release).json();
264 MatcherAssert.assertThat(
265 "Values are not equal",
266 new Release.Smart(release).prerelease(),
267 Matchers.is(Boolean.FALSE)
268 );
269 }
270
271 @Test
272 void isDraft() throws IOException {
273 final Release release = Mockito.mock(Release.class);
274 Mockito.doReturn(
275 Json.createObjectBuilder().add("draft", Boolean.TRUE).build()
276 ).when(release).json();
277 MatcherAssert.assertThat(
278 "Values are not equal",
279 new Release.Smart(release).draft(),
280 Matchers.is(Boolean.TRUE)
281 );
282 }
283
284 @Test
285 void isNotDraft() throws IOException {
286 final Release release = Mockito.mock(Release.class);
287 Mockito.doReturn(
288 Json.createObjectBuilder().add("draft", Boolean.FALSE).build()
289 ).when(release).json();
290 MatcherAssert.assertThat(
291 "Values are not equal",
292 new Release.Smart(release).draft(),
293 Matchers.is(Boolean.FALSE)
294 );
295 }
296
297 @Test
298 void missingDraft() throws IOException {
299 final Release release = Mockito.mock(Release.class);
300 Mockito.doReturn(
301 Json.createObjectBuilder().build()
302 ).when(release).json();
303 MatcherAssert.assertThat(
304 "Values are not equal",
305 new Release.Smart(release).draft(),
306 Matchers.is(Boolean.FALSE)
307 );
308 }
309 }