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
...@@ -422,17 +422,46 @@ public class IssuesApi extends AbstractApi implements Constants { ...@@ -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, 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 { 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() GitLabApiForm formData = new GitLabApiForm()
.withParam("title", title, true) .withParam("title", title, true)
.withParam("description", description) .withParam("description", description)
.withParam("confidential", confidential) .withParam("confidential", confidential)
.withParam("assignee_ids", assigneeIds) .withParam("assignee_ids", assigneeIds)
.withParam("milestone_id", milestoneId) .withParam("milestone_id", milestoneId)
.withParam("labels", labels) .withParam("labels", labels)
.withParam("created_at", createdAt) .withParam("created_at", createdAt)
.withParam("due_date", dueDate) .withParam("due_date", dueDate)
.withParam("merge_request_to_resolve_discussions_of", mergeRequestToResolveId) .withParam("merge_request_to_resolve_discussions_of", mergeRequestToResolveId)
.withParam("discussion_to_resolve", discussionToResolveId); .withParam("discussion_to_resolve", discussionToResolveId)
.withParam("iteration_title", iterationTitle);
Response response = post(Response.Status.CREATED, formData, "projects", getProjectIdOrPath(projectIdOrPath), "issues"); Response response = post(Response.Status.CREATED, formData, "projects", getProjectIdOrPath(projectIdOrPath), "issues");
return (response.readEntity(Issue.class)); return (response.readEntity(Issue.class));
} }
......
...@@ -91,6 +91,11 @@ public class IssueFilter { ...@@ -91,6 +91,11 @@ public class IssueFilter {
*/ */
private Date updatedBefore; private Date updatedBefore;
/**
* Return issues in current iteration.
*/
private String iterationTitle;
/*- properties -*/ /*- properties -*/
public List<String> getIids() { public List<String> getIids() {
...@@ -213,6 +218,14 @@ public class IssueFilter { ...@@ -213,6 +218,14 @@ public class IssueFilter {
this.updatedBefore = updatedBefore; this.updatedBefore = updatedBefore;
} }
public String getIterationTitle() {
return iterationTitle;
}
public void setIterationTitle(String iterationTitle) {
this.iterationTitle = iterationTitle;
}
/*- builder -*/ /*- builder -*/
public IssueFilter withIids(List<String> iids) { public IssueFilter withIids(List<String> iids) {
this.iids = iids; this.iids = iids;
...@@ -289,6 +302,11 @@ public class IssueFilter { ...@@ -289,6 +302,11 @@ public class IssueFilter {
return (this); return (this);
} }
public IssueFilter withIterationTitle(String iterationTitle) {
this.iterationTitle = iterationTitle;
return (this);
}
/*- params generator -*/ /*- params generator -*/
@JsonIgnore @JsonIgnore
public GitLabApiForm getQueryParams(int page, int perPage) { public GitLabApiForm getQueryParams(int page, int perPage) {
...@@ -314,6 +332,7 @@ public class IssueFilter { ...@@ -314,6 +332,7 @@ public class IssueFilter {
.withParam("created_after", ISO8601.toString(createdAfter, false)) .withParam("created_after", ISO8601.toString(createdAfter, false))
.withParam("created_before", ISO8601.toString(createdBefore, false)) .withParam("created_before", ISO8601.toString(createdBefore, false))
.withParam("updated_after", ISO8601.toString(updatedAfter, 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 { ...@@ -71,6 +71,7 @@ public class TestIssuesApi extends AbstractIntegrationTest {
private static final String ISSUE_TITLE = "Test Issue Title"; 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 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 final String TEST_GROUP = HelperUtils.getProperty(GROUP_KEY);
private static Random randomNumberGenerator = new Random(); private static Random randomNumberGenerator = new Random();
...@@ -320,8 +321,10 @@ public class TestIssuesApi extends AbstractIntegrationTest { ...@@ -320,8 +321,10 @@ public class TestIssuesApi extends AbstractIntegrationTest {
Issue issueOpen = gitLabApi.getIssuesApi().createIssue(projectId, getUniqueTitle(), ISSUE_DESCRIPTION); Issue issueOpen = gitLabApi.getIssuesApi().createIssue(projectId, getUniqueTitle(), ISSUE_DESCRIPTION);
Issue issueClose = 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()); issueClose = gitLabApi.getIssuesApi().closeIssue(projectId, issueClose.getIid());
final Long openIid = issueOpen.getIid(); final Long openIid = issueOpen.getIid();
IssueFilter openFilter = new IssueFilter().withState(IssueState.OPENED); IssueFilter openFilter = new IssueFilter().withState(IssueState.OPENED);
List<Issue> opens = gitLabApi.getIssuesApi().getIssues(projectId, openFilter); List<Issue> opens = gitLabApi.getIssuesApi().getIssues(projectId, openFilter);
...@@ -333,5 +336,12 @@ public class TestIssuesApi extends AbstractIntegrationTest { ...@@ -333,5 +336,12 @@ public class TestIssuesApi extends AbstractIntegrationTest {
List<Issue> closes = gitLabApi.getIssuesApi().getIssues(projectId, closeFilter); List<Issue> closes = gitLabApi.getIssuesApi().getIssues(projectId, closeFilter);
assertNotNull(closes); assertNotNull(closes);
assertTrue(closes.stream().map(Issue::getIid).anyMatch(iid -> iid.equals(closedIid))); 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