public void EnsuresNonEmptyArguments()
            {
                var githubClient = Substitute.For<IGitHubClient>();
                var client = new ObservableRepositoryCommitsClient(githubClient);
                var options = new ApiOptions();
                var request = new CommitRequest();

                Assert.ThrowsAsync<ArgumentException>(() => client.GetAll("", "name", request, options).ToTask());
                Assert.ThrowsAsync<ArgumentException>(() => client.GetAll("owner", "", request, options).ToTask());
            }
            public void GetsCorrectUrl()
            {
                var githubClient = Substitute.For<IGitHubClient>();
                var client = new ObservableRepositoryCommitsClient(githubClient);
                var options = new ApiOptions();
                var request = new CommitRequest();

                client.GetAll("fake", "repo", request, options);
                githubClient.Received().Repository.Commit.GetAll("fake", "repo", request, options);
            }
            public void EnsuresNonNullArguments()
            {
                var connection = Substitute.For<IGitHubClient>();
                var client = new ObservableRepositoryCommitsClient(connection);

                Assert.Throws<ArgumentNullException>(() => client.GetAll(null, "name"));
                Assert.Throws<ArgumentNullException>(() => client.GetAll("owner", null));

                Assert.Throws<ArgumentNullException>(() => client.GetAll(null, "name", ApiOptions.None));
                Assert.Throws<ArgumentNullException>(() => client.GetAll("owner", null, ApiOptions.None));
                Assert.Throws<ArgumentNullException>(() => client.GetAll("owner", "name", (ApiOptions)null));

                Assert.Throws<ArgumentNullException>(() => client.GetAll(null, "name", new CommitRequest()));
                Assert.Throws<ArgumentNullException>(() => client.GetAll("owner", null, new CommitRequest()));
                Assert.Throws<ArgumentNullException>(() => client.GetAll("owner", "name", (CommitRequest)null));

                Assert.Throws<ArgumentNullException>(() => client.GetAll(null, "name", new CommitRequest(), ApiOptions.None));
                Assert.Throws<ArgumentNullException>(() => client.GetAll("owner", null, new CommitRequest(), ApiOptions.None));
                Assert.Throws<ArgumentNullException>(() => client.GetAll("owner", "name", null, ApiOptions.None));
                Assert.Throws<ArgumentNullException>(() => client.GetAll("owner", "name", new CommitRequest(), null));

                Assert.Throws<ArgumentNullException>(() => client.GetAll(1, (ApiOptions)null));
                Assert.Throws<ArgumentNullException>(() => client.GetAll(1, (CommitRequest)null));
                Assert.Throws<ArgumentNullException>(() => client.GetAll(1, null, ApiOptions.None));
                Assert.Throws<ArgumentNullException>(() => client.GetAll(1, new CommitRequest(), null));

                Assert.Throws<ArgumentException>(() => client.GetAll("", "name"));
                Assert.Throws<ArgumentException>(() => client.GetAll("owner", ""));
                Assert.Throws<ArgumentException>(() => client.GetAll("", "name", ApiOptions.None));
                Assert.Throws<ArgumentException>(() => client.GetAll("owner", "", ApiOptions.None));
                Assert.Throws<ArgumentException>(() => client.GetAll("", "name", new CommitRequest()));
                Assert.Throws<ArgumentException>(() => client.GetAll("owner", "", new CommitRequest()));
                Assert.Throws<ArgumentException>(() => client.GetAll("", "name", new CommitRequest(), ApiOptions.None));
                Assert.Throws<ArgumentException>(() => client.GetAll("owner", "", new CommitRequest(), ApiOptions.None));
            }
            public void RequestsCorrectUrlWithRepositoryIdWithApiOptionsParameterized()
            {
                var gitHubClient = Substitute.For<IGitHubClient>();
                var client = new ObservableRepositoryCommitsClient(gitHubClient);

                var commitRequest = new CommitRequest
                {
                    Author = "author",
                    Sha = "sha",
                    Path = "path",
                    Since = null,
                    Until = null
                };

                var options = new ApiOptions
                {
                    PageCount = 1,
                    StartPage = 1,
                    PageSize = 1
                };

                client.GetAll(1, commitRequest, options);

                gitHubClient.Received().Repository.Commit.GetAll(1, commitRequest, options);
            }
            public void RequestsCorrectUrlWithRepositoryIdParameterized()
            {
                var gitHubClient = Substitute.For<IGitHubClient>();
                var client = new ObservableRepositoryCommitsClient(gitHubClient);

                var commitRequest = new CommitRequest
                {
                    Author = "author",
                    Sha = "sha",
                    Path = "path",
                    Since = null,
                    Until = null
                };

                client.GetAll(1, commitRequest);

                gitHubClient.Received().Repository.Commit.GetAll(1, commitRequest);
            }
            public void RequestsCorrectUrlWithRepositoryIdWithApiOptions()
            {
                var gitHubClient = Substitute.For<IGitHubClient>();
                var client = new ObservableRepositoryCommitsClient(gitHubClient);

                var options = new ApiOptions
                {
                    PageCount = 1,
                    StartPage = 1,
                    PageSize = 1
                };

                client.GetAll(1, options);

                gitHubClient.Received().Repository.Commit.GetAll(1, options);
            }
            public void RequestsCorrectUrlWithRepositoryId()
            {
                var gitHubClient = Substitute.For<IGitHubClient>();
                var client = new ObservableRepositoryCommitsClient(gitHubClient);

                client.GetAll(1);

                gitHubClient.Received().Repository.Commit.GetAll(1);
            }