private async Task <List <Season> > GetAllEpisodesInfo(ISeriesIdentifier seriesIdentifier, string authToken, IWebProxy proxyPreferences) { List <TheTvDbEpisode> theTvDbEpisodes = new List <TheTvDbEpisode>(); int pageNumber = 1; while (true) { string episodesJson = await _apiDownloader.GetEpisodesAsync(seriesIdentifier, pageNumber, authToken, proxyPreferences); TheTvDbEpisodeResult episodesResults = JsonConvert.DeserializeObject <TheTvDbEpisodeResult>(episodesJson); if (episodesResults?.Data == null) { break; } theTvDbEpisodes.AddRange(episodesResults.Data); if (episodesResults.Links?.Next == null) { break; } pageNumber = episodesResults.Links.Next.Value; } List <Season> seasons = Adapt(theTvDbEpisodes).ToList(); return(seasons); }
public async Task ShouldProduceEpisodes() { // Arrange var seriesId = GetSeriesIdentifier(KnownTvShowIds.StarWarsTheBadBatch); var authToken = await GetAuthTokenAsync(); var sut = CreateDownloader(); // Act var actual = await sut.GetEpisodesAsync(seriesId, authToken, null); // Assert Assert.That(actual, Is.Not.Null); Assert.That(actual, Is.Not.Empty); Console.WriteLine(actual); TheTvDbEpisodeResult response = JsonConvert.DeserializeObject <TheTvDbEpisodeResult>(actual); Assert.That(response, Is.Not.Null); Assert.That(response.Errors, Is.Null | Is.Empty); Assert.That(response.Data, Is.Not.Null); Assert.That(response.Data.Length, Is.GreaterThan(0)); Assert.That(response.Data[0], Is.Not.Null); Assert.That(response.Data[0].SeriesId, Is.EqualTo(KnownTvShowIds.StarWarsTheBadBatch.ToString("D"))); Assert.That(response.Data[0].EpisodeName, Is.EqualTo("Aftermath")); }