public async Task ReturnsEveryPageOfRepositories() { var firstPageUrl = new Uri("/repositories", 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, Arg.Is <Dictionary <string, string> >(d => d.Count == 1 && d["since"] == "364"), 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, Arg.Is <Dictionary <string, string> >(d => d.Count == 1 && d["since"] == "364"), null); gitHubClient.Connection.Received(1).Get <List <Repository> >(secondPageUrl, null, null); gitHubClient.Connection.Received(1).Get <List <Repository> >(thirdPageUrl, null, null); }
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); }