1
2
3
4
5 package com.jcabi.github.mock;
6
7 import com.jcabi.github.GitHub;
8 import com.jcabi.github.Release;
9 import com.jcabi.github.Releases;
10 import jakarta.json.Json;
11 import jakarta.json.JsonString;
12 import jakarta.json.JsonValue;
13 import java.io.IOException;
14 import org.hamcrest.MatcherAssert;
15 import org.hamcrest.Matchers;
16 import org.junit.jupiter.api.Test;
17
18
19
20
21
22 @SuppressWarnings({"PMD.TooManyMethods", "PMD.AvoidDuplicateLiterals"})
23 final class MkReleaseTest {
24 @Test
25 void canDeleteRelease() throws IOException {
26 final Releases releases = MkReleaseTest.releases();
27 final Release release = releases.create("v1.0");
28 release.delete();
29 MatcherAssert.assertThat(
30 "Values are not equal",
31 releases.iterate().iterator().hasNext(),
32 Matchers.is(false)
33 );
34 }
35
36
37
38
39
40 @Test
41 void canGetUrl() throws Exception {
42 final Release release = MkReleaseTest.release();
43 final Release.Smart smart = new Release.Smart(release);
44 MatcherAssert.assertThat(
45 "Values are not equal",
46 smart.url().toString(),
47 Matchers.equalTo(MkReleaseTest.value(release, "url"))
48 );
49 }
50
51
52
53
54
55 @Test
56 void canGetAssetsUrl() throws Exception {
57 final Release release = MkReleaseTest.release();
58 final Release.Smart smart = new Release.Smart(release);
59 MatcherAssert.assertThat(
60 "Values are not equal",
61 smart.assetsUrl().toString(),
62 Matchers.equalTo(MkReleaseTest.value(release, "assets_url"))
63 );
64 }
65
66
67
68
69
70 @Test
71 void canGetHtmlUrl() throws Exception {
72 final Release release = MkReleaseTest.release();
73 final Release.Smart smart = new Release.Smart(release);
74 MatcherAssert.assertThat(
75 "Values are not equal",
76 smart.htmlUrl().toString(),
77 Matchers.equalTo(MkReleaseTest.value(release, "html_url"))
78 );
79 }
80
81
82
83
84
85 @Test
86 void canGetUploadUrl() throws Exception {
87 final Release release = MkReleaseTest.release();
88 final Release.Smart smart = new Release.Smart(release);
89 MatcherAssert.assertThat(
90 "Values are not equal",
91 smart.uploadUrl().toString(),
92 Matchers.equalTo(MkReleaseTest.value(release, "upload_url"))
93 );
94 }
95
96
97
98
99
100 @Test
101 void canGetTag() throws Exception {
102 final Release release = MkReleaseTest.release();
103 final Release.Smart smart = new Release.Smart(release);
104 MatcherAssert.assertThat(
105 "Values are not equal",
106 smart.tag(),
107 Matchers.equalTo(MkReleaseTest.value(release, "tag_name"))
108 );
109 }
110
111
112
113
114
115 @Test
116 void canGetCommitish() throws Exception {
117 final Release release = MkReleaseTest.release();
118 final Release.Smart smart = new Release.Smart(release);
119 MatcherAssert.assertThat(
120 "Values are not equal",
121 smart.commitish(),
122 Matchers.equalTo(MkReleaseTest.value(release, "target_commitish"))
123 );
124 }
125
126
127
128
129
130 @Test
131 void canGetName() throws Exception {
132 final Release release = MkReleaseTest.release();
133 final Release.Smart smart = new Release.Smart(release);
134 MatcherAssert.assertThat(
135 "Values are not equal",
136 smart.name(),
137 Matchers.equalTo(MkReleaseTest.value(release, "name"))
138 );
139 }
140
141
142
143
144
145 @Test
146 void canGetBody() throws Exception {
147 final Release release = MkReleaseTest.release();
148 final Release.Smart smart = new Release.Smart(release);
149 MatcherAssert.assertThat(
150 "Values are not equal",
151 smart.body(),
152 Matchers.equalTo(MkReleaseTest.value(release, "body"))
153 );
154 }
155
156
157
158
159
160 @Test
161 void canGetCreatedAt() throws Exception {
162 final Release release = MkReleaseTest.release();
163 final Release.Smart smart = new Release.Smart(release);
164 MatcherAssert.assertThat(
165 "Values are not equal",
166 smart.createdAt(),
167 Matchers.equalTo(new GitHub.Time(MkReleaseTest.value(release, "created_at"))
168 .date()
169 )
170 );
171 }
172
173
174
175
176
177 @Test
178 void prerelease() throws Exception {
179 final Release release = MkReleaseTest.release();
180 release.patch(
181 Json.createObjectBuilder().add("prerelease", true).build()
182 );
183 MatcherAssert.assertThat(
184 "Values are not equal",
185 new Release.Smart(release).prerelease(),
186 Matchers.is(true)
187 );
188 }
189
190
191
192
193
194 @Test
195 void canGetPublishedAt() throws Exception {
196 final Release release = MkReleaseTest.release();
197 final Release.Smart smart = new Release.Smart(release);
198 MatcherAssert.assertThat(
199 "Values are not equal",
200 smart.publishedAt(),
201 Matchers.equalTo(
202 new GitHub.Time(MkReleaseTest.value(release, "published_at")).date()
203 )
204 );
205 }
206
207
208
209
210
211
212
213
214 private static String value(final Release release, final String name)
215 throws IOException {
216 final JsonValue json = release.json().get(name);
217 String result = null;
218 if (json instanceof JsonString) {
219 result = ((JsonString) json).getString();
220 }
221 return result;
222 }
223
224
225
226
227
228 private static Release release() throws IOException {
229 return MkReleaseTest.releases().create("v1");
230 }
231
232
233
234
235
236
237 private static Releases releases() throws IOException {
238 return new MkGitHub().randomRepo().releases();
239 }
240 }