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:
Edwin Kempin
2019-08-27 09:23:53 +02:00
parent b99280dc17
commit 2d660ed86d
4 changed files with 42 additions and 5 deletions

View File

@@ -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;
}
}
/**

View File

@@ -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);

View File

@@ -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(

View File

@@ -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 {