public async Task CreatesRequestsWithRepositoryId() { var number = await CreateTheWorld(_github, _context, createReviewRequests : false); var reviewRequestToCreate = PullRequestReviewRequest.ForReviewers(_collaboratorLogins); var pr = await _client.Create(_context.RepositoryId, number, reviewRequestToCreate); Assert.Equal(_collaboratorLogins.ToList(), pr.RequestedReviewers.Select(rr => rr.Login)); }
public async Task DeletesRequests() { var number = await CreateTheWorld(_github, _context); var reviewRequestsBeforeDelete = await _client.Get(_context.RepositoryOwner, _context.RepositoryName, number); var reviewRequestToCreate = PullRequestReviewRequest.ForReviewers(_collaboratorLogins); await _client.Delete(_context.RepositoryOwner, _context.RepositoryName, number, reviewRequestToCreate); var reviewRequestsAfterDelete = await _client.Get(_context.RepositoryOwner, _context.RepositoryName, number); Assert.NotEmpty(reviewRequestsBeforeDelete.Users); Assert.Empty(reviewRequestsAfterDelete.Users); }
public void PostsToCorrectUrlWithRepositoryId() { var gitHubClient = Substitute.For <IGitHubClient>(); var client = new ObservablePullRequestReviewRequestsClient(gitHubClient); IReadOnlyList <string> fakeReviewers = new List <string> { "zxc", "asd" }; var pullRequestReviewRequest = PullRequestReviewRequest.ForReviewers(fakeReviewers); client.Create(42, 13, pullRequestReviewRequest); gitHubClient.Received().PullRequest.ReviewRequest.Create(42, 13, pullRequestReviewRequest); }
public async Task PostsToCorrectUrl() { var gitHubClient = Substitute.For <IGitHubClient>(); var client = new ObservablePullRequestReviewRequestsClient(gitHubClient); IReadOnlyList <string> fakeReviewers = new List <string> { "zxc", "asd" }; var pullRequestReviewRequest = PullRequestReviewRequest.ForReviewers(fakeReviewers); await client.Delete("owner", "name", 13, pullRequestReviewRequest); gitHubClient.Received().PullRequest.ReviewRequest.Delete("owner", "name", 13, pullRequestReviewRequest); }
public void PostsToCorrectUrlWithRepositoryId() { var connection = Substitute.For <IApiConnection>(); var client = new PullRequestReviewRequestsClient(connection); IReadOnlyList <string> fakeReviewers = new List <string> { "zxc", "asd" }; var pullRequestReviewRequest = PullRequestReviewRequest.ForReviewers(fakeReviewers); client.Create(42, 13, pullRequestReviewRequest); connection.Received().Post <PullRequest>( Arg.Is <Uri>(u => u.ToString() == "repositories/42/pulls/13/requested_reviewers"), pullRequestReviewRequest); }
public async Task PostsToCorrectUrl() { var connection = Substitute.For <IApiConnection>(); var client = new PullRequestReviewRequestsClient(connection); IReadOnlyList <string> fakeReviewers = new List <string> { "zxc", "asd" }; var pullRequestReviewRequest = PullRequestReviewRequest.ForReviewers(fakeReviewers); await client.Delete("owner", "name", 13, pullRequestReviewRequest); connection.Received().Delete( Arg.Is <Uri>(u => u.ToString() == "repos/owner/name/pulls/13/requested_reviewers"), pullRequestReviewRequest); }
public async Task EnsuresNonNullArguments() { var gitHubClient = Substitute.For <IGitHubClient>(); var client = new ObservablePullRequestReviewRequestsClient(gitHubClient); IReadOnlyList <string> fakeReviewers = new List <string> { "zxc", "asd" }; var pullRequestReviewRequest = PullRequestReviewRequest.ForReviewers(fakeReviewers); Assert.Throws <ArgumentNullException>(() => client.Create(null, "fakeRepoName", 1, pullRequestReviewRequest)); Assert.Throws <ArgumentNullException>(() => client.Create("fakeOwner", null, 1, pullRequestReviewRequest)); Assert.Throws <ArgumentNullException>(() => client.Create("fakeOwner", "fakeRepoName", 1, null)); Assert.Throws <ArgumentNullException>(() => client.Create(42, 1, null)); Assert.Throws <ArgumentException>(() => client.Create("", "fakeRepoName", 1, pullRequestReviewRequest)); Assert.Throws <ArgumentException>(() => client.Create("fakeOwner", "", 1, pullRequestReviewRequest)); }
static async Task <int> CreateTheWorld(IGitHubClient github, RepositoryContext context, bool createReviewRequests = true) { var master = await github.Git.Reference.Get(context.RepositoryOwner, context.RepositoryName, "heads/master"); // create new commit for master branch var newMasterTree = await CreateTree(github, context, new Dictionary <string, string> { { "README.md", "Hello World!" } }); var newMaster = await CreateCommit(github, context, "baseline for pull request", newMasterTree.Sha, master.Object.Sha); // update master await github.Git.Reference.Update(context.RepositoryOwner, context.RepositoryName, "heads/master", new ReferenceUpdate(newMaster.Sha)); // create new commit for feature branch var featureBranchTree = await CreateTree(github, context, new Dictionary <string, string> { { "README.md", "I am overwriting this blob with something new" } }); var featureBranchCommit = await CreateCommit(github, context, "this is the commit to merge into the pull request", featureBranchTree.Sha, newMaster.Sha); var featureBranchTree2 = await CreateTree(github, context, new Dictionary <string, string> { { "README.md", "I am overwriting this blob with something new a 2nd time" } }); var featureBranchCommit2 = await CreateCommit(github, context, "this is a 2nd commit to merge into the pull request", featureBranchTree2.Sha, featureBranchCommit.Sha); // create branch await github.Git.Reference.Create(context.RepositoryOwner, context.RepositoryName, new NewReference("refs/heads/my-branch", featureBranchCommit2.Sha)); // create a pull request var pullRequest = new NewPullRequest("Nice title for the pull request", "my-branch", "master"); var createdPullRequest = await github.PullRequest.Create(context.RepositoryOwner, context.RepositoryName, pullRequest); // Create review requests (optional) if (createReviewRequests) { var reviewRequest = PullRequestReviewRequest.ForReviewers(_collaboratorLogins); await github.PullRequest.ReviewRequest.Create(context.RepositoryOwner, context.RepositoryName, createdPullRequest.Number, reviewRequest); } return(createdPullRequest.Number); }
public async Task EnsuresNonNullArguments() { var connection = Substitute.For <IApiConnection>(); var client = new PullRequestReviewRequestsClient(connection); IReadOnlyList <string> fakeReviewers = new List <string> { "zxc", "asd" }; var pullRequestReviewRequest = PullRequestReviewRequest.ForReviewers(fakeReviewers); await Assert.ThrowsAsync <ArgumentNullException>(() => client.Create(null, "fakeRepoName", 1, pullRequestReviewRequest)); await Assert.ThrowsAsync <ArgumentNullException>(() => client.Create("fakeOwner", null, 1, pullRequestReviewRequest)); await Assert.ThrowsAsync <ArgumentNullException>(() => client.Create("fakeOwner", "fakeRepoName", 1, null)); await Assert.ThrowsAsync <ArgumentNullException>(() => client.Create(1, 1, null)); await Assert.ThrowsAsync <ArgumentException>(() => client.Create("", "fakeRepoName", 1, pullRequestReviewRequest)); await Assert.ThrowsAsync <ArgumentException>(() => client.Create("fakeOwner", "", 1, pullRequestReviewRequest)); }