1
2
3
4
5 package com.jcabi.github;
6
7 import java.io.IOException;
8 import org.apache.commons.lang3.RandomStringUtils;
9 import org.hamcrest.MatcherAssert;
10 import org.hamcrest.Matchers;
11 import org.junit.jupiter.api.AfterAll;
12 import org.junit.jupiter.api.BeforeAll;
13 import org.junit.jupiter.api.Test;
14
15
16
17
18
19 @OAuthScope(OAuthScope.Scope.REPO)
20 @SuppressWarnings("PMD.AvoidDuplicateLiterals")
21 final class RtReleasesITCase {
22
23
24
25
26 private static Repos repos;
27
28
29
30
31 private static Repo repo;
32
33
34
35
36
37 private static RepoRule rule = new RepoRule();
38
39
40
41
42 @BeforeAll
43 static void setUp() throws IOException {
44 final GitHub github = GitHubIT.connect();
45 RtReleasesITCase.repos = github.repos();
46 RtReleasesITCase.repo = RtReleasesITCase.rule.repo(RtReleasesITCase.repos);
47 }
48
49
50
51
52 @AfterAll
53 static void tearDown() throws IOException {
54 if (RtReleasesITCase.repos != null && RtReleasesITCase.repo != null) {
55 RtReleasesITCase.repos.remove(RtReleasesITCase.repo.coordinates());
56 }
57 }
58
59 @Test
60 void canFetchAllReleases() throws IOException {
61 final Releases releases = RtReleasesITCase.repo.releases();
62 final Release release = releases.create(
63 RandomStringUtils.secure().nextAlphanumeric(10)
64 );
65 try {
66 MatcherAssert.assertThat(
67 "Collection is not empty",
68 releases.iterate(),
69 Matchers.not(Matchers.emptyIterableOf(Release.class))
70 );
71 } finally {
72 releases.remove(release.number());
73 }
74 }
75
76 @Test
77 void canFetchRelease() throws IOException {
78 final Releases releases = RtReleasesITCase.repo.releases();
79 final String tag = "v1.0";
80 final Release release = releases.create(tag);
81 MatcherAssert.assertThat(
82 "Values are not equal",
83 releases.get(release.number()).number(),
84 Matchers.equalTo(release.number())
85 );
86 MatcherAssert.assertThat(
87 "Values are not equal",
88 new Release.Smart(releases.get(release.number())).tag(),
89 Matchers.equalTo(tag)
90 );
91 releases.remove(release.number());
92 }
93
94 @Test
95 void canCreateRelease() throws IOException {
96 final Releases releases = RtReleasesITCase.repo.releases();
97 final Release created = releases.create("0.1");
98 final int number = created.number();
99 try {
100 final Release obtained = releases.get(number);
101 MatcherAssert.assertThat(
102 "Values are not equal",
103 created,
104 Matchers.is(obtained)
105 );
106 MatcherAssert.assertThat(
107 "Values are not equal",
108 new Release.Smart(created).tag(),
109 Matchers.equalTo(new Release.Smart(obtained).tag())
110 );
111 } finally {
112 releases.remove(number);
113 }
114 }
115
116 @Test
117 void canRemoveRelease() throws IOException {
118 final Releases releases = RtReleasesITCase.repo.releases();
119 final Release release = releases.create(
120 RandomStringUtils.secure().nextAlphanumeric(10)
121 );
122 MatcherAssert.assertThat(
123 "Collection does not contain expected item",
124 releases.iterate(),
125 Matchers.hasItem(release)
126 );
127 releases.remove(release.number());
128 MatcherAssert.assertThat(
129 "Collection does not contain expected item",
130 releases.iterate(),
131 Matchers.not(Matchers.hasItem(release))
132 );
133 }
134
135 @Test
136 void canEditTag() throws IOException {
137 final Releases releases = RtReleasesITCase.repo.releases();
138 final Release release = releases.create(
139 RandomStringUtils.secure().nextAlphanumeric(10)
140 );
141 final String tag = RandomStringUtils.secure().nextAlphanumeric(15);
142 new Release.Smart(release).tag(tag);
143 MatcherAssert.assertThat(
144 "Values are not equal",
145 new Release.Smart(releases.get(release.number())).tag(),
146 Matchers.equalTo(tag)
147 );
148 releases.remove(release.number());
149 }
150
151 @Test
152 void canEditBody() throws IOException {
153 final Releases releases = RtReleasesITCase.repo.releases();
154 final Release release = releases.create(
155 RandomStringUtils.secure().nextAlphanumeric(10)
156 );
157 final String body = "Description of the release";
158 new Release.Smart(release).body(body);
159 MatcherAssert.assertThat(
160 "Values are not equal",
161 new Release.Smart(releases.get(release.number())).body(),
162 Matchers.equalTo(body)
163 );
164 releases.remove(release.number());
165 }
166 }