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 {
|
||||
private String query;
|
||||
private int limit;
|
||||
private boolean excludeGroups;
|
||||
|
||||
public abstract List<SuggestedReviewerInfo> get() throws RestApiException;
|
||||
|
||||
@@ -394,6 +395,11 @@ public interface ChangeApi {
|
||||
return this;
|
||||
}
|
||||
|
||||
public SuggestedReviewersRequest excludeGroups(boolean excludeGroups) {
|
||||
this.excludeGroups = excludeGroups;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getQuery() {
|
||||
return query;
|
||||
}
|
||||
@@ -401,6 +407,10 @@ public interface ChangeApi {
|
||||
public int getLimit() {
|
||||
return limit;
|
||||
}
|
||||
|
||||
public boolean getExcludeGroups() {
|
||||
return excludeGroups;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -448,6 +448,7 @@ class ChangeApiImpl implements ChangeApi {
|
||||
try {
|
||||
suggestReviewers.setQuery(r.getQuery());
|
||||
suggestReviewers.setLimit(r.getLimit());
|
||||
suggestReviewers.setExcludeGroups(r.getExcludeGroups());
|
||||
return suggestReviewers.apply(change).value();
|
||||
} catch (Exception e) {
|
||||
throw asRestApiException("Cannot retrieve suggested reviewers", e);
|
||||
|
||||
@@ -39,15 +39,20 @@ import org.kohsuke.args4j.Option;
|
||||
public class SuggestChangeReviewers extends SuggestReviewers
|
||||
implements RestReadView<ChangeResource> {
|
||||
|
||||
private final PermissionBackend permissionBackend;
|
||||
private final Provider<CurrentUser> self;
|
||||
private final ProjectCache projectCache;
|
||||
|
||||
private boolean excludeGroups;
|
||||
|
||||
@Option(
|
||||
name = "--exclude-groups",
|
||||
aliases = {"-e"},
|
||||
usage = "exclude groups from query")
|
||||
boolean excludeGroups;
|
||||
|
||||
private final PermissionBackend permissionBackend;
|
||||
private final Provider<CurrentUser> self;
|
||||
private final ProjectCache projectCache;
|
||||
public SuggestChangeReviewers setExcludeGroups(boolean excludeGroups) {
|
||||
this.excludeGroups = excludeGroups;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Inject
|
||||
SuggestChangeReviewers(
|
||||
|
||||
@@ -135,6 +135,27 @@ public class SuggestReviewersIT extends AbstractDaemonTest {
|
||||
.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
|
||||
@GerritConfig(name = "accounts.visibility", value = "SAME_GROUP")
|
||||
public void suggestReviewersSameGroupVisibility() throws Exception {
|
||||
|
||||
Reference in New Issue
Block a user