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);
        }
Esempio n. 3
0
            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);
            }
Esempio n. 4
0
            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);
            }
Esempio n. 5
0
            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);
            }
Esempio n. 6
0
            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);
            }
Esempio n. 7
0
            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);
    }
Esempio n. 9
0
            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));
            }