Skip to content

Commit 0e0d0bd

Browse files
j0nathan33cdancy
authored andcommitted
Add possibility to update Default Reviewers (#83)
* First commit of default reviewers * Rename Conditions to condition * Add mock test * Add live Test * Fix build * Add more test for branchApiLiveTest * Add Fallback for Condition * Update Object Condition for add ErrorsHolder * Add rest api for create Condition * Edit MatcherId to add new value * Add live test * Add mock Test * Fix junit * Fix build * Add endpoint for Condition update * Add liveTest * Add mock Test * Fix build * Fix build * Add annotation Documentation for listConditions * Add annotation Documentation for createCondition * Add annotation Documentation for updateCondition * Add missing annotation * Refactore test after change from master branch * Refactore test after change from master branch * fix build * Fix build * Fix build * Edit code after codeReview from another PR (List defaultReviewers) * Fix code after codeReview * Fix issues #89 * Rename test class * Add field to get conditionId for next Step * Add live test to get listConditions * Change HardCode User to defaultUser * Fix build * Edit code after codeReviews from another PR * Edit code after codeReview * Remove test dependency don't need anymore
1 parent 61527d6 commit 0e0d0bd

File tree

4 files changed

+94
-3
lines changed

4 files changed

+94
-3
lines changed

src/main/java/com/cdancy/bitbucket/rest/features/DefaultReviewersApi.java

+12
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import javax.ws.rs.Consumes;
3030
import javax.ws.rs.GET;
3131
import javax.ws.rs.POST;
32+
import javax.ws.rs.PUT;
3233
import javax.ws.rs.Path;
3334
import javax.ws.rs.PathParam;
3435
import javax.ws.rs.Produces;
@@ -59,4 +60,15 @@ List<Condition> listConditions(@PathParam("project") String projectKey,
5960
Condition createCondition(@PathParam("project") String project,
6061
@PathParam("repo") String repo,
6162
@BinderParam(BindToJsonPayload.class) CreateCondition condition);
63+
64+
@Named("default-reviewers:update-Condition")
65+
@Documentation({"https://jira.atlassian.com/browse/BSERV-8988"})
66+
@Consumes(MediaType.APPLICATION_JSON)
67+
@Path("/{project}/repos/{repo}/condition/{id}")
68+
@Fallback(BitbucketFallbacks.ConditionOnError.class)
69+
@PUT
70+
Condition updateCondition(@PathParam("project") String project,
71+
@PathParam("repo") String repo,
72+
@PathParam("id") long id,
73+
@BinderParam(BindToJsonPayload.class) CreateCondition condition);
6274
}

src/test/java/com/cdancy/bitbucket/rest/BaseBitbucketApiLiveTest.java

+1
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ protected synchronized User getDefaultUser() {
8888
}
8989
assertThat(defaultUser).isNotNull();
9090
}
91+
assertThat(defaultUser).isNotNull();
9192
return defaultUser;
9293
}
9394

src/test/java/com/cdancy/bitbucket/rest/features/DefaultReviewersApiLiveTest.java

+19-3
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public class DefaultReviewersApiLiveTest extends BaseBitbucketApiLiveTest {
3838
private GeneratedTestContents generatedTestContents;
3939
private String projectKey;
4040
private String repoKey;
41-
private Long conditionId;
41+
private Long conditionId = null;
4242

4343
@BeforeClass
4444
public void init() {
@@ -101,13 +101,28 @@ public void testCreateConditionMatcherDifferent() {
101101
validCondition(returnCondition, requiredApprover, Matcher.MatcherId.MASTER, Matcher.MatcherId.DEVELOPMENT);
102102
}
103103

104-
@Test(dependsOnMethods = {"testCreateCondition", "testCreateConditionMatcherDifferent"})
104+
@Test(dependsOnMethods = {"testCreateCondition"})
105+
public void testUpdateCondition() {
106+
Long requiredApprover = 0L;
107+
Matcher matcherSrc = Matcher.create(Matcher.MatcherId.ANY, true);
108+
Matcher matcherDst = Matcher.create(Matcher.MatcherId.DEVELOPMENT, true);
109+
List<User> listUser = new ArrayList<>();
110+
listUser.add(getDefaultUser());
111+
CreateCondition condition = CreateCondition.create(conditionId, generatedTestContents.repository,
112+
matcherSrc, matcherDst, listUser, requiredApprover);
113+
114+
Condition returnCondition = api().updateCondition(projectKey, repoKey, conditionId, condition);
115+
validCondition(returnCondition, requiredApprover, Matcher.MatcherId.ANY_REF, Matcher.MatcherId.DEVELOPMENT);
116+
assertThat(returnCondition.id()).isEqualTo(conditionId);
117+
}
118+
119+
@Test(dependsOnMethods = {"testUpdateCondition","testCreateCondition", "testCreateConditionMatcherDifferent"})
105120
public void testListConditions() {
106121
List<Condition> listCondition = api().listConditions(projectKey, repoKey);
107122
assertThat(listCondition.size()).isEqualTo(2);
108123
for (Condition condition : listCondition) {
109124
if (condition.id().equals(conditionId)) {
110-
validCondition(condition, 1L, Matcher.MatcherId.ANY_REF, Matcher.MatcherId.ANY_REF);
125+
validCondition(condition, 0L, Matcher.MatcherId.ANY_REF, Matcher.MatcherId.DEVELOPMENT);
111126
} else {
112127
validCondition(condition, 1L, Matcher.MatcherId.MASTER, Matcher.MatcherId.DEVELOPMENT);
113128
}
@@ -130,6 +145,7 @@ private void validCondition(Condition returnValue, Long requiredApprover, Matche
130145
assertThat(returnValue.errors()).isEmpty();
131146
assertThat(returnValue.requiredApprovals()).isEqualTo(requiredApprover);
132147
assertThat(returnValue.reviewers().size()).isEqualTo(1);
148+
assertThat(returnValue.reviewers().get(0).id()).isEqualTo(1);
133149
assertThat(returnValue.sourceRefMatcher().id()).isEqualTo(matcherSrc.getId());
134150
assertThat(returnValue.targetRefMatcher().id()).isEqualTo(matcherDst.getId());
135151
}

src/test/java/com/cdancy/bitbucket/rest/features/DefaultReviewersApiMockTest.java

+62
Original file line numberDiff line numberDiff line change
@@ -124,4 +124,66 @@ public void testCreateConditionOnError() throws Exception {
124124
server.shutdown();
125125
}
126126
}
127+
128+
public void testUpdateCondition() throws Exception {
129+
MockWebServer server = mockEtcdJavaWebServer();
130+
131+
server.enqueue(new MockResponse().setBody(payloadFromResource("/default-reviwers-create.json")).setResponseCode(200));
132+
BitbucketApi baseApi = api(server.getUrl("/"));
133+
DefaultReviewersApi api = baseApi.defaultReviewersApi();
134+
try {
135+
Long requiredApprover = 1L;
136+
Matcher matcherSrc = Matcher.create(Matcher.MatcherId.ANY, true);
137+
Matcher matcherDst = Matcher.create(Matcher.MatcherId.ANY, true);
138+
List<User> listUser = new ArrayList<>();
139+
listUser.add(User.create("test", "test@test.com", 1, "test", true, "test", "NORMAL"));
140+
Repository repository = Repository.create(null, -1, null, null, null, null, false, null, false, null, null);
141+
CreateCondition condition = CreateCondition.create(10L, repository, matcherSrc, matcherDst, listUser, requiredApprover);
142+
143+
String projectKey = "test";
144+
String repoKey = "1234";
145+
146+
Condition returnCondition = api.updateCondition(projectKey, repoKey, 10L, condition);
147+
assertThat(returnCondition).isNotNull();
148+
assertThat(returnCondition.errors()).isEmpty();
149+
assertThat(returnCondition.id()).isEqualTo(10L);
150+
151+
assertSent(server, "PUT", "/rest/default-reviewers/" + BitbucketApiMetadata.API_VERSION
152+
+ "/projects/" + projectKey + "/repos/" + repoKey + "/condition/10");
153+
} finally {
154+
baseApi.close();
155+
server.shutdown();
156+
}
157+
}
158+
159+
public void testUpdateConditionOnError() throws Exception {
160+
MockWebServer server = mockEtcdJavaWebServer();
161+
162+
server.enqueue(new MockResponse().setBody(payloadFromResource("/repository-not-exist.json")).setResponseCode(404));
163+
BitbucketApi baseApi = api(server.getUrl("/"));
164+
DefaultReviewersApi api = baseApi.defaultReviewersApi();
165+
try {
166+
Long requiredApprover = 1L;
167+
Matcher matcherSrc = Matcher.create(Matcher.MatcherId.ANY, true);
168+
Matcher matcherDst = Matcher.create(Matcher.MatcherId.ANY, true);
169+
List<User> listUser = new ArrayList<>();
170+
listUser.add(User.create("test", "test@test.com", 1, "test", true, "test", "NORMAL"));
171+
Repository repository = Repository.create(null, -1, null, null, null, null, false, null, false, null, null);
172+
CreateCondition condition = CreateCondition.create(10L, repository, matcherSrc, matcherDst, listUser, requiredApprover);
173+
174+
String projectKey = "test";
175+
String repoKey = "1234";
176+
177+
Condition returnCondition = api.updateCondition(projectKey, "123456", 10L, condition);
178+
assertThat(returnCondition).isNotNull();
179+
assertThat(returnCondition.errors()).isNotEmpty();
180+
assertThat(returnCondition.errors().size()).isEqualTo(1);
181+
182+
assertSent(server, "PUT", "/rest/default-reviewers/" + BitbucketApiMetadata.API_VERSION
183+
+ "/projects/" + projectKey + "/repos/123456/condition/10");
184+
} finally {
185+
baseApi.close();
186+
server.shutdown();
187+
}
188+
}
127189
}

0 commit comments

Comments
 (0)