public async Task <PullRequest> Merge(PullRequest pullRequest, string projectKey) { string requestUrl = UrlBuilder.FormatRestApiUrl(PULL_REQUEST_MERGE, null, projectKey, pullRequest.FromRef.Repository.Slug, pullRequest.Id, pullRequest.Version); try { PullRequest pr = await _httpWorker.PostAsync <PullRequest>(requestUrl, null).ConfigureAwait(false); return(pr); } catch (Exception ex) { if (ex.Data["json"] != null) { MergeErrorResponse error = JsonConvert.DeserializeObject <MergeErrorResponse>((string)ex.Data["json"]); throw new StashMergeException("Merge failure", ex, error); } throw; } }
public async Task Merge_PullRequest() { var pullrequests = await stashClient.PullRequests.Get(EXISTING_PROJECT, EXISTING_REPOSITORY); var request = pullrequests.Values.First(); var status = await stashClient.PullRequests.Status(request, EXISTING_PROJECT); Assert.IsNotNull(status); PullRequest requestMerged = null; MergeErrorResponse stashError = null; try { requestMerged = await stashClient.PullRequests.Merge(request, EXISTING_PROJECT); } catch (StashMergeException exc) { stashError = exc.ErrorResponse; } if (stashError == null) { Console.WriteLine("Pull Request Merged"); Assert.IsNotNull(requestMerged); Assert.AreEqual(true, status.CanMerge); Assert.AreEqual(status.CanMerge, requestMerged.State == PullRequestState.MERGED); } else { Console.WriteLine("Pull Request failed to merge"); Assert.AreEqual(false, status.CanMerge); foreach (var error in stashError.Errors) { Assert.AreEqual(true, error.Conflicted); } } }
public StashMergeException(string message, MergeErrorResponse response) : base(message) { ErrorResponse = response; }