Example #1
0
        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);
        }
Example #2
0
        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");
        }
Example #3
0
        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);
        }
Example #4
0
        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);
        }
Example #5
0
        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());
        }