public void EnsuresNonNullArguments()
            {
                var gitHubClient = Substitute.For <IGitHubClient>();
                var client       = new ObservableGitHubAppsClient(gitHubClient);

                Assert.Throws <ArgumentNullException>(() => client.GetAllInstallationsForCurrent(null));
            }
            public void EnsuresNonEmptyArguments()
            {
                var gitHubClient = Substitute.For <IGitHubClient>();
                var client       = new ObservableGitHubAppsClient(gitHubClient);

                Assert.Throws <ArgumentException>(() => client.Get(""));
            }
            public void EnsuresNonEmptyArguments()
            {
                var gitHubClient = Substitute.For <IGitHubClient>();
                var client       = new ObservableGitHubAppsClient(gitHubClient);

                Assert.Throws <ArgumentException>(() => client.GetRepositoryInstallationForCurrent("", "ducks"));
                Assert.Throws <ArgumentException>(() => client.GetRepositoryInstallationForCurrent("mighty", ""));
            }
            public void GetsFromCorrectUrl()
            {
                var gitHubClient = Substitute.For <IGitHubClient>();
                var client       = new ObservableGitHubAppsClient(gitHubClient);

                client.GetCurrent();

                gitHubClient.GitHubApps.Received().GetCurrent();
            }
            public void GetsFromCorrectUrlByRepositoryId()
            {
                var gitHubClient = Substitute.For <IGitHubClient>();
                var client       = new ObservableGitHubAppsClient(gitHubClient);

                client.GetRepositoryInstallationForCurrent(1234);

                gitHubClient.GitHubApps.Received().GetRepositoryInstallationForCurrent(1234);
            }
            public void GetsFromCorrectUrl()
            {
                var gitHubClient = Substitute.For <IGitHubClient>();
                var client       = new ObservableGitHubAppsClient(gitHubClient);

                client.GetOrganizationInstallationForCurrent("ducks");

                gitHubClient.GitHubApps.Received().GetOrganizationInstallationForCurrent("ducks");
            }
            public void PostsToCorrectUrl()
            {
                var gitHubClient = Substitute.For <IGitHubClient>();
                var client       = new ObservableGitHubAppsClient(gitHubClient);

                int fakeInstallationId = 3141;

                client.CreateInstallationToken(fakeInstallationId);

                gitHubClient.GitHubApps.Received().CreateInstallationToken(fakeInstallationId);
            }
            public void RequestsCorrectUrl()
            {
                var connection   = Substitute.For <IConnection>();
                var gitHubClient = new GitHubClient(connection);
                var client       = new ObservableGitHubAppsClient(gitHubClient);

                client.GetAllInstallationsForCurrent();

                connection.Received().Get <List <Installation> >(
                    Arg.Is <Uri>(u => u.ToString() == "app/installations"),
                    Args.EmptyDictionary,
                    "application/vnd.github.machine-man-preview+json");
            }
            public void GetsFromCorrectUrl()
            {
                var connection   = Substitute.For <IConnection>();
                var gitHubClient = new GitHubClient(connection);
                var client       = new ObservableGitHubAppsClient(gitHubClient);

                client.GetAllInstallationsForCurrentUser();

                connection.Received().Get <List <InstallationsResponse> >(
                    Arg.Is <Uri>(u => u.ToString() == "user/installations"),
                    null,
                    "application/vnd.github.machine-man-preview+json");
            }
            public void RequestsTheCorrectUrlWithApiOptions()
            {
                var connection   = Substitute.For <IConnection>();
                var gitHubClient = new GitHubClient(connection);
                var client       = new ObservableGitHubAppsClient(gitHubClient);

                var options = new ApiOptions
                {
                    PageSize = 1
                };

                client.GetAllInstallationsForCurrent(options);

                connection.Received().Get <List <Installation> >(
                    Arg.Is <Uri>(u => u.ToString() == "app/installations"),
                    Arg.Is <Dictionary <string, string> >(x =>
                                                          x.Count == 1 &&
                                                          x["per_page"] == "1"),
                    "application/vnd.github.machine-man-preview+json");
            }