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); }
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); }