Unverified Commit 0b32741d authored by Дмитрий's avatar Дмитрий Committed by GitHub
Browse files

Add field iteration into IssueFilter (#913)


Add iterationTitle in IssueFilter for filtration issues
by this field

Co-authored-by: default avatarУсачев Дмитрий Дмитриевич <92usachevdd@region.cbr.ru>
parent 5a20858e
No related merge requests found
Showing with 69 additions and 11 deletions
+69 -11
......@@ -422,17 +422,46 @@ public class IssuesApi extends AbstractApi implements Constants {
public Issue createIssue(Object projectIdOrPath, String title, String description, Boolean confidential, List<Long> assigneeIds, Long milestoneId, String labels,
Date createdAt, Date dueDate, Long mergeRequestToResolveId, Long discussionToResolveId) throws GitLabApiException {
return (createIssue(projectIdOrPath, title, description, confidential, assigneeIds, milestoneId, labels, createdAt, dueDate, mergeRequestToResolveId, discussionToResolveId, null));
}
/**
* Create an issue for the project.
*
* <pre><code>GitLab Endpoint: POST /projects/:id/issues</code></pre>
*
* @param projectIdOrPath the project in the form of an Long(ID), String(path), or Project instance
* @param title the issue title of an issue, required
* @param description the description of an issue, optional
* @param confidential set the issue to be confidential, default is false, optional
* @param assigneeIds the IDs of the users to assign issue, optional
* @param milestoneId the ID of a milestone to assign issue, optional
* @param labels comma-separated label names for an issue, optional
* @param createdAt the date the issue was created at, optional
* @param dueDate the due date, optional
* @param mergeRequestToResolveId the IID of a merge request in which to resolve all issues. This will fill the issue with a default
* description and mark all discussions as resolved. When passing a description or title, these values will take precedence over the default values. Optional
* @param discussionToResolveId the ID of a discussion to resolve. This will fill in the issue with a default description and mark the discussion as resolved.
* Use in combination with merge_request_to_resolve_discussions_of. Optional
* @param iterationTitle the iteration title of an issue, optional
* @return an instance of Issue
* @throws GitLabApiException if any exception occurs
*/
public Issue createIssue(Object projectIdOrPath, String title, String description, Boolean confidential, List<Long> assigneeIds, Long milestoneId, String labels,
Date createdAt, Date dueDate, Long mergeRequestToResolveId, Long discussionToResolveId, String iterationTitle) throws GitLabApiException {
GitLabApiForm formData = new GitLabApiForm()
.withParam("title", title, true)
.withParam("description", description)
.withParam("confidential", confidential)
.withParam("assignee_ids", assigneeIds)
.withParam("milestone_id", milestoneId)
.withParam("labels", labels)
.withParam("created_at", createdAt)
.withParam("due_date", dueDate)
.withParam("merge_request_to_resolve_discussions_of", mergeRequestToResolveId)
.withParam("discussion_to_resolve", discussionToResolveId);
.withParam("title", title, true)
.withParam("description", description)
.withParam("confidential", confidential)
.withParam("assignee_ids", assigneeIds)
.withParam("milestone_id", milestoneId)
.withParam("labels", labels)
.withParam("created_at", createdAt)
.withParam("due_date", dueDate)
.withParam("merge_request_to_resolve_discussions_of", mergeRequestToResolveId)
.withParam("discussion_to_resolve", discussionToResolveId)
.withParam("iteration_title", iterationTitle);
Response response = post(Response.Status.CREATED, formData, "projects", getProjectIdOrPath(projectIdOrPath), "issues");
return (response.readEntity(Issue.class));
}
......
......@@ -91,6 +91,11 @@ public class IssueFilter {
*/
private Date updatedBefore;
/**
* Return issues in current iteration.
*/
private String iterationTitle;
/*- properties -*/
public List<String> getIids() {
......@@ -213,6 +218,14 @@ public class IssueFilter {
this.updatedBefore = updatedBefore;
}
public String getIterationTitle() {
return iterationTitle;
}
public void setIterationTitle(String iterationTitle) {
this.iterationTitle = iterationTitle;
}
/*- builder -*/
public IssueFilter withIids(List<String> iids) {
this.iids = iids;
......@@ -289,6 +302,11 @@ public class IssueFilter {
return (this);
}
public IssueFilter withIterationTitle(String iterationTitle) {
this.iterationTitle = iterationTitle;
return (this);
}
/*- params generator -*/
@JsonIgnore
public GitLabApiForm getQueryParams(int page, int perPage) {
......@@ -314,6 +332,7 @@ public class IssueFilter {
.withParam("created_after", ISO8601.toString(createdAfter, false))
.withParam("created_before", ISO8601.toString(createdBefore, false))
.withParam("updated_after", ISO8601.toString(updatedAfter, false))
.withParam("updated_before", ISO8601.toString(updatedBefore, false)));
.withParam("updated_before", ISO8601.toString(updatedBefore, false)))
.withParam("iteration_title", iterationTitle);
}
}
......@@ -71,6 +71,7 @@ public class TestIssuesApi extends AbstractIntegrationTest {
private static final String ISSUE_TITLE = "Test Issue Title";
private static final String ISSUE_DESCRIPTION = "This is a really nice description, not.";
private static final String ITERATION_TITLE = "iteration title";
private static final String TEST_GROUP = HelperUtils.getProperty(GROUP_KEY);
private static Random randomNumberGenerator = new Random();
......@@ -320,8 +321,10 @@ public class TestIssuesApi extends AbstractIntegrationTest {
Issue issueOpen = gitLabApi.getIssuesApi().createIssue(projectId, getUniqueTitle(), ISSUE_DESCRIPTION);
Issue issueClose = gitLabApi.getIssuesApi().createIssue(projectId, getUniqueTitle(), ISSUE_DESCRIPTION);
Issue issueInIteration = gitLabApi.getIssuesApi().createIssue(projectId, getUniqueTitle(), ISSUE_DESCRIPTION, null, null, null, null, null, null, null, null, ITERATION_TITLE);
issueClose = gitLabApi.getIssuesApi().closeIssue(projectId, issueClose.getIid());
final Long openIid = issueOpen.getIid();
IssueFilter openFilter = new IssueFilter().withState(IssueState.OPENED);
List<Issue> opens = gitLabApi.getIssuesApi().getIssues(projectId, openFilter);
......@@ -333,5 +336,12 @@ public class TestIssuesApi extends AbstractIntegrationTest {
List<Issue> closes = gitLabApi.getIssuesApi().getIssues(projectId, closeFilter);
assertNotNull(closes);
assertTrue(closes.stream().map(Issue::getIid).anyMatch(iid -> iid.equals(closedIid)));
final Long issueInIterationIid = issueInIteration.getIid();
IssueFilter issueInIterationFilter = new IssueFilter().withIterationTitle(ITERATION_TITLE);
List<Issue> issuesInIteration = gitLabApi.getIssuesApi().getIssues(projectId, issueInIterationFilter);
assertNotNull(issuesInIteration);
assertTrue(issuesInIteration.stream().map(Issue::getIid).anyMatch(iid -> iid.equals(issueInIterationIid)));
}
}
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment