/// <summary> /// Gets a single Pull Request by number. /// </summary> /// <remarks> /// http://developer.github.com/v3/pulls/#get-a-single-pull-request /// </remarks> public IObservable <PullRequest> Get(string owner, string name, int number) { Ensure.ArgumentNotNullOrEmptyString(owner, nameof(owner)); Ensure.ArgumentNotNullOrEmptyString(name, nameof(name)); return(_client.Get(owner, name, number).ToObservable()); }
public async Task CannotBeMergedDueNotInMergeableState() { await CreateTheWorld(); var master = await _github.Git.Reference.Get(Helper.UserName, _context.RepositoryName, "heads/master"); var newMasterTree = await CreateTree(new Dictionary <string, string> { { "README.md", "Hello World, we meet again!" } }); var masterCommit = await CreateCommit("Commit in master", newMasterTree.Sha, master.Object.Sha); await _github.Git.Reference.Update(Helper.UserName, _context.RepositoryName, "heads/master", new ReferenceUpdate(masterCommit.Sha)); var newPullRequest = new NewPullRequest("a pull request", branchName, "master"); var pullRequest = await _fixture.Create(Helper.UserName, _context.RepositoryName, newPullRequest); await Task.Delay(TimeSpan.FromSeconds(5)); var updatedPullRequest = await _fixture.Get(Helper.UserName, _context.RepositoryName, pullRequest.Number); Assert.False(updatedPullRequest.Mergeable); var merge = new MergePullRequest { Sha = pullRequest.Head.Sha }; var ex = await Assert.ThrowsAsync <PullRequestNotMergeableException>(() => _fixture.Merge(Helper.UserName, _context.RepositoryName, pullRequest.Number, merge)); Assert.True(ex.Message.Equals("Pull Request is not mergeable")); }
public void SetUp() { _compareResults = new MockCompareResult(); _gitHubClient = Substitute.For <IGitHubClient>(); _repoClient = Substitute.For <IRepositoriesClient>(); _commitsClient = Substitute.For <IRepositoryCommitsClient>(); _prClient = Substitute.For <IPullRequestsClient>(); _contentsClient = Substitute.For <IRepositoryContentsClient>(); _fileContentPersist = Substitute.For <IFileContentPersist>(); _diffTool = Substitute.For <IDiffToolLauncher>(); _patchService = Substitute.For <IPatchService>(); _reviewClient = Substitute.For <IIssueCommentsClient>(); _commentsBuilder = Substitute.For <ICommentsBuilder>(); _commentsPersist = Substitute.For <ICommentsPersist>(); _repoHistoryPersist = Substitute.For <IRepoHistoryPersist>(); _backgroundTaskRunner = Substitute.For <IBackgroundTaskRunner>(); var userManager = Substitute.For <IUserManager>(); _gitHubClient.Repository.Returns(_repoClient); _repoClient.Commit.Returns(_commitsClient); _repoClient.PullRequest.Returns(_prClient); _repoClient.Content.Returns(_contentsClient); _gitHubClient.Issue.Comment.Returns(_reviewClient); _commitsClient.Compare(Arg.Any <string>(), Arg.Any <string>(), Arg.Any <string>(), Arg.Any <string>() ).Returns(Task.FromResult((CompareResult)_compareResults)); _mainWindowVm = new MainWindowVm(_gitHubClient, _fileContentPersist, _diffTool, _patchService, _commentsBuilder, _commentsPersist, _repoHistoryPersist, _backgroundTaskRunner, userManager) { PullRequestLocator = _pullRequestLocator, IsUrlMode = false }; _pullRequest = new MockPullRequest { Number = _pullRequestLocator.PullRequestNumber }; _prClient.Get(_mainWindowVm.PullRequestLocator.Owner, _mainWindowVm.PullRequestLocator.Repository, _mainWindowVm.PullRequestLocator.PullRequestNumber).Returns(Task.FromResult((PullRequest)_pullRequest)); _baseFileName = MainWindowVm.BuildBaseFileName(_pullRequest.Base.Sha, _compareResults.File1.Filename); _headFileName = MainWindowVm.BuildHeadFileName(_pullRequest.Head.Sha, _compareResults.File1.Filename); _commentsContainer = new CommentsContainer { GeneralComments = GeneralComments }; _commentsContainer.FileComments.Add(new FileComment { FileName = _compareResults.File1.Filename, Comments = Comment1, ReviewStatus = ReviewStatus1 }); _commentsContainer.FileComments.Add(new FileComment { FileName = _compareResults.File2.Filename, Comments = Comment2, ReviewStatus = ReviewStatus2 }); _commentsPersist.Load(Arg.Is <PullRequestLocator>(x => x.Equals(_pullRequestLocator))) .Returns(Task.FromResult(_commentsContainer)); _backgroundTaskRunner.WhenForAnyArgs(x => x.RunInBackground(null)).Do(args => { var a = args[0] as Action; a.Invoke(); }); _commentsPersist.ClearReceivedCalls(); _backgroundTaskRunner.ClearReceivedCalls(); }