public async Task TransitionIssueAsyncWithCommentAndFields() { var issue = _jira.CreateIssue("TST"); issue.Summary = "Issue to resolve with async" + _random.Next(int.MaxValue); issue.Type = "Bug"; issue.SaveChanges(); Assert.Null(issue.ResolutionDate); var updates = new WorkflowTransitionUpdates() { Comment = "Comment with transition" }; issue.FixVersions.Add("2.0"); await issue.WorkflowTransitionAsync(WorkflowActions.Resolve, updates, CancellationToken.None); var updatedIssue = await _jira.Issues.GetIssueAsync(issue.Key.Value); Assert.Equal("Resolved", updatedIssue.Status.Name); Assert.Equal("Fixed", updatedIssue.Resolution.Name); Assert.Equal("2.0", updatedIssue.FixVersions.First().Name); var comments = updatedIssue.GetCommentsAsync().Result; Assert.Single(comments); Assert.Equal("Comment with transition", comments.First().Body); }
private async void updateStatus() { var updates = new WorkflowTransitionUpdates() { Comment = "--- Comment with transition ---" }; await pCurrentIssue.WorkflowTransitionAsync("Done", updates); // await issue.WorkflowTransitionAsync("TO DO", updates); MessageBox.Show("Issue Status Changed"); }
public async Task ExecuteWorkflowActionAsync(Issue issue, string actionName, WorkflowTransitionUpdates updates, CancellationToken token = default(CancellationToken)) { var actions = await this.GetActionsAsync(issue.Key.Value, token).ConfigureAwait(false); var action = actions.FirstOrDefault(a => a.Name.Equals(actionName, StringComparison.OrdinalIgnoreCase)); if (action == null) { throw new InvalidOperationException(String.Format("Workflow action with name '{0}' not found.", actionName)); } updates = updates ?? new WorkflowTransitionUpdates(); var resource = String.Format("rest/api/latest/issue/{0}/transitions", issue.Key.Value); var fieldProvider = issue as IRemoteIssueFieldProvider; var remoteFields = await fieldProvider.GetRemoteFieldValuesAsync(token).ConfigureAwait(false); var remoteIssue = await issue.ToRemoteAsync(token).ConfigureAwait(false); var fields = await BuildFieldsObjectFromIssueAsync(remoteIssue, remoteFields, token).ConfigureAwait(false); var updatesObject = new JObject(); if (!String.IsNullOrEmpty(updates.Comment)) { updatesObject.Add("comment", new JArray(new JObject[] { new JObject(new JProperty("add", new JObject(new JProperty("body", updates.Comment)))) })); } var requestBody = new { transition = new { id = action.Id }, update = updatesObject, fields = fields }; await _jira.RestClient.ExecuteRequestAsync(Method.POST, resource, requestBody, token).ConfigureAwait(false); }
public async Task TransitionIssueAsyncWithComment() { var issue = _jira.CreateIssue("TST"); issue.Summary = "Issue to resolve with async" + _random.Next(int.MaxValue); issue.Type = "Bug"; issue.SaveChanges(); Assert.Null(issue.ResolutionDate); var updates = new WorkflowTransitionUpdates() { Comment = "Comment with transition" }; await issue.WorkflowTransitionAsync(WorkflowActions.Resolve, updates, CancellationToken.None); Assert.Equal("Resolved", issue.Status.Name); Assert.Equal("Fixed", issue.Resolution.Name); var comments = issue.GetComments(); Assert.Equal(1, comments.Count); Assert.Equal("Comment with transition", comments[0].Body); }
public Task <Issue> ExecuteIssueWorkflowActionAsync(Issue issue, string actionId, WorkflowTransitionUpdates updates, CancellationToken token) { updates = updates ?? new WorkflowTransitionUpdates(); var resource = String.Format("rest/api/2/issue/{0}/transitions", issue.Key.Value); var fieldProvider = issue as IRemoteIssueFieldProvider; var remoteFields = fieldProvider.GetRemoteFields(); var remoteIssue = issue.ToRemote(); var fields = BuildFieldsObjectFromIssue(remoteIssue, remoteFields); var updatesObject = new JObject(); if (!String.IsNullOrEmpty(updates.Comment)) { updatesObject.Add("comment", new JArray(new JObject[] { new JObject(new JProperty("add", new JObject(new JProperty("body", updates.Comment)))) })); } var requestBody = new { transition = new { id = actionId }, update = updatesObject, fields = fields }; return(this.ExecuteRequestAsync(Method.POST, resource, requestBody, token).ContinueWith(task => { return this.GetIssueAsync(issue.Key.Value, token); }).Unwrap()); }