public async Task <List <Show> > GetShows(IShowRepository showRepository, int pageNumber) { var shows = new List <Show>(); _logger.LogInformation($"Stating copying data from {nameof(pageNumber)} {pageNumber}"); var showDtos = await _tvMazeService.GetShowsByPage(pageNumber).ConfigureAwait(false); _logger.LogInformation($"Found {showDtos.Count} Shows from TvMaze API service"); foreach (var showDto in showDtos) { var tvMazeShowWithCast = await _tvMazeService.GetShowDataById(showDto.Id).ConfigureAwait(false); _logger.LogInformation($"Found TvMaze show {tvMazeShowWithCast} with cast"); var show = new Show { Id = tvMazeShowWithCast.Id, Name = tvMazeShowWithCast.Name }; show.Cast.AddRange(tvMazeShowWithCast.Cast .TakeWhile(personDto => personDto != null) .Distinct(new PersonDtoEqualityComparer()) .Select(personDto => new Cast { CastPersonId = personDto.Id, ShowId = show.Id, Person = GetPerson(showRepository, personDto) })); shows.Add(show); } return(shows); }
public void GetShowsByPage_WherePageNumberEqualsARandomPage_ExpectsReturnDataToMatch() { var randomPageId = new Random().Next(1, 10000); var randomId = new Random().Next(1, 10000); using (var httpTest = new HttpTest()) { httpTest.RespondWithJson(GetTestData(randomId)); var sut = new TvMazeService(_jsonJsonApiDataReader, GetLogger()); var showData = sut.GetShowsByPage(randomPageId); showData.Wait(); Assert.IsTrue(showData.Result.Count == 1); Assert.IsTrue(showData.Result.First().Id == randomId); Assert.IsTrue(showData.Result.First().Name == $"some show {randomId}"); } }