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);
        }
Example #2
0
        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}");
            }
        }