Add Java API to exclude groups for reviewer suggestion
Use the new API to test exclusion of groups for reviewer suggestion. Change-Id: I1b6456e09c5f1d8ae3dc7870976f8e3757088163 Signed-off-by: Edwin Kempin <ekempin@google.com>
This commit is contained in:
@@ -381,6 +381,7 @@ public interface ChangeApi {
|
|||||||
abstract class SuggestedReviewersRequest {
|
abstract class SuggestedReviewersRequest {
|
||||||
private String query;
|
private String query;
|
||||||
private int limit;
|
private int limit;
|
||||||
|
private boolean excludeGroups;
|
||||||
|
|
||||||
public abstract List<SuggestedReviewerInfo> get() throws RestApiException;
|
public abstract List<SuggestedReviewerInfo> get() throws RestApiException;
|
||||||
|
|
||||||
@@ -394,6 +395,11 @@ public interface ChangeApi {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public SuggestedReviewersRequest excludeGroups(boolean excludeGroups) {
|
||||||
|
this.excludeGroups = excludeGroups;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public String getQuery() {
|
public String getQuery() {
|
||||||
return query;
|
return query;
|
||||||
}
|
}
|
||||||
@@ -401,6 +407,10 @@ public interface ChangeApi {
|
|||||||
public int getLimit() {
|
public int getLimit() {
|
||||||
return limit;
|
return limit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean getExcludeGroups() {
|
||||||
|
return excludeGroups;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -448,6 +448,7 @@ class ChangeApiImpl implements ChangeApi {
|
|||||||
try {
|
try {
|
||||||
suggestReviewers.setQuery(r.getQuery());
|
suggestReviewers.setQuery(r.getQuery());
|
||||||
suggestReviewers.setLimit(r.getLimit());
|
suggestReviewers.setLimit(r.getLimit());
|
||||||
|
suggestReviewers.setExcludeGroups(r.getExcludeGroups());
|
||||||
return suggestReviewers.apply(change).value();
|
return suggestReviewers.apply(change).value();
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw asRestApiException("Cannot retrieve suggested reviewers", e);
|
throw asRestApiException("Cannot retrieve suggested reviewers", e);
|
||||||
|
|||||||
@@ -39,15 +39,20 @@ import org.kohsuke.args4j.Option;
|
|||||||
public class SuggestChangeReviewers extends SuggestReviewers
|
public class SuggestChangeReviewers extends SuggestReviewers
|
||||||
implements RestReadView<ChangeResource> {
|
implements RestReadView<ChangeResource> {
|
||||||
|
|
||||||
|
private final PermissionBackend permissionBackend;
|
||||||
|
private final Provider<CurrentUser> self;
|
||||||
|
private final ProjectCache projectCache;
|
||||||
|
|
||||||
|
private boolean excludeGroups;
|
||||||
|
|
||||||
@Option(
|
@Option(
|
||||||
name = "--exclude-groups",
|
name = "--exclude-groups",
|
||||||
aliases = {"-e"},
|
aliases = {"-e"},
|
||||||
usage = "exclude groups from query")
|
usage = "exclude groups from query")
|
||||||
boolean excludeGroups;
|
public SuggestChangeReviewers setExcludeGroups(boolean excludeGroups) {
|
||||||
|
this.excludeGroups = excludeGroups;
|
||||||
private final PermissionBackend permissionBackend;
|
return this;
|
||||||
private final Provider<CurrentUser> self;
|
}
|
||||||
private final ProjectCache projectCache;
|
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
SuggestChangeReviewers(
|
SuggestChangeReviewers(
|
||||||
|
|||||||
@@ -135,6 +135,27 @@ public class SuggestReviewersIT extends AbstractDaemonTest {
|
|||||||
.collect(toList()));
|
.collect(toList()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void suggestReviewersWithExcludeGroups() throws Exception {
|
||||||
|
String changeId = createChange().getChangeId();
|
||||||
|
|
||||||
|
// by default groups are included
|
||||||
|
List<SuggestedReviewerInfo> reviewers = suggestReviewers(changeId, name("user"));
|
||||||
|
assertReviewers(
|
||||||
|
reviewers, ImmutableList.of(user1, user2, user3), ImmutableList.of(group1, group2, group3));
|
||||||
|
|
||||||
|
// exclude groups
|
||||||
|
reviewers =
|
||||||
|
gApi.changes().id(changeId).suggestReviewers(name("user")).excludeGroups(true).get();
|
||||||
|
assertReviewers(reviewers, ImmutableList.of(user1, user2, user3), ImmutableList.of());
|
||||||
|
|
||||||
|
// explicitly include groups
|
||||||
|
reviewers =
|
||||||
|
gApi.changes().id(changeId).suggestReviewers(name("user")).excludeGroups(false).get();
|
||||||
|
assertReviewers(
|
||||||
|
reviewers, ImmutableList.of(user1, user2, user3), ImmutableList.of(group1, group2, group3));
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@GerritConfig(name = "accounts.visibility", value = "SAME_GROUP")
|
@GerritConfig(name = "accounts.visibility", value = "SAME_GROUP")
|
||||||
public void suggestReviewersSameGroupVisibility() throws Exception {
|
public void suggestReviewersSameGroupVisibility() throws Exception {
|
||||||
|
|||||||
Reference in New Issue
Block a user