コード例 #1
0
            public async Task ReturnsAllPublicReposSinceLastSeen()
            {
                var github = Helper.GetAuthenticatedClient();

                var client = new ObservableRepositoriesClient(github);
                var request = new PublicRepositoryRequest(32732250L);
                var repositories = await client.GetAllPublic(request).ToArray();
                Assert.NotEmpty(repositories);
                Assert.Equal(32732252, repositories[0].Id);
                Assert.False(repositories[0].Private);
                Assert.Equal("zad19", repositories[0].Name);
            }
コード例 #2
0
            public async Task ReturnsEveryPageOfRepositories()
            {
                var firstPageUrl = new Uri("/repositories?since=364", UriKind.Relative);
                var secondPageUrl = new Uri("https://example.com/page/2");
                var firstPageLinks = new Dictionary<string, Uri> { { "next", secondPageUrl } };
                IApiResponse<List<Repository>> firstPageResponse = new ApiResponse<List<Repository>>(
                    CreateResponseWithApiInfo(firstPageLinks),
                    new List<Repository>
                    {
                        new Repository(364),
                        new Repository(365),
                        new Repository(366)
                    });

                var thirdPageUrl = new Uri("https://example.com/page/3");
                var secondPageLinks = new Dictionary<string, Uri> { { "next", thirdPageUrl } };
                IApiResponse<List<Repository>> secondPageResponse = new ApiResponse<List<Repository>>
                (
                    CreateResponseWithApiInfo(secondPageLinks),
                    new List<Repository>
                    {
                        new Repository(367),
                        new Repository(368),
                        new Repository(369)
                    });

                IApiResponse<List<Repository>> lastPageResponse = new ApiResponse<List<Repository>>(
                    new Response(),
                    new List<Repository>
                    {
                        new Repository(370)
                    });

                var gitHubClient = Substitute.For<IGitHubClient>();
                gitHubClient.Connection.Get<List<Repository>>(firstPageUrl, null, null)
                    .Returns(Task.FromResult(firstPageResponse));
                gitHubClient.Connection.Get<List<Repository>>(secondPageUrl, null, null)
                    .Returns(Task.FromResult(secondPageResponse));
                gitHubClient.Connection.Get<List<Repository>>(thirdPageUrl, null, null)
                    .Returns(Task.FromResult(lastPageResponse));

                var repositoriesClient = new ObservableRepositoriesClient(gitHubClient);

                var results = await repositoriesClient.GetAllPublic(new PublicRepositoryRequest(364)).ToArray();

                Assert.Equal(7, results.Length);
                gitHubClient.Connection.Received(1).Get<List<Repository>>(firstPageUrl, null, null);
                gitHubClient.Connection.Received(1).Get<List<Repository>>(secondPageUrl, null, null);
                gitHubClient.Connection.Received(1).Get<List<Repository>>(thirdPageUrl, null, null);
            }