Beispiel #1
0
 private static CalendarEpisode MapToModel(Episode episode)
 {
     return new CalendarEpisode
     {
         FirstAired = episode.FirstAired,
         Title = episode.Title,
         Number = episode.Number,
         SeasonNumber = episode.SeasonNumber,
         ShowId = episode.ShowId,
         ShowName = episode.Show.Name
     };
 }
Beispiel #2
0
        private async Task AddEpisodesAsync(Show show, IEnumerable<int> ids)
        {
            var records = await this.AdvancedEpisodeClient.GetFullEpisodesAsync(ids);

            foreach (var record in records)
            {
                var episode = new Episode();

                this.MapToEpisode(episode, record);

                show.Episodes.Add(episode);
            }
        }
Beispiel #3
0
        private static MyEpisode EpisodeToModel(Episode episode)
        {
            if (episode == null)
            {
                return null;
            }

            return new MyEpisode
            {
                FirstAired = episode.FirstAired,
                Title = episode.Title,
                Number = episode.Number,
                SeasonNumber = episode.SeasonNumber
            };
        }
Beispiel #4
0
        private void MapToEpisode(Episode episode, EpisodeRecord data)
        {
            episode.Title = data.EpisodeName;
            episode.Description = data.Overview;
            episode.ImdbId = data.ImdbId;
            episode.Number = data.AiredEpisodeNumber.Value;
            episode.SeasonNumber = data.AiredSeason.Value;
            episode.TheTvDbId = data.Id;

            if (!string.IsNullOrWhiteSpace(data.FirstAired))
            {
                episode.FirstAired = this.DateParser.ParseFirstAired(data.FirstAired);
            }

            episode.LastUpdated = data.LastUpdated.ToDateTime();
        }
Beispiel #5
0
        public async Task PopulateEpisodeAsync(Episode episode)
        {
            var response = await this.EpisodesClient.GetAsync(episode.TheTvDbId);

            this.MapToEpisode(episode, response.Data);
        }
        // ReSharper disable once InconsistentNaming
        public async Task PopulateEpisodeAsync_should_map_the_episode()
        {
            var episodesClient = Substitute.For<IEpisodesClient>();

            var fetcher = new EpisodeFetcher(episodesClient, Substitute.For<IAdvancedEpisodeClient>(),
                Substitute.For<IAdvancedSeriesClient>());

            var episode = new Episode
            {
                TheTvDbId = 42
            };

            var response = new TvDbResponse<EpisodeRecord>
            {
                Data = new EpisodeRecord
                {
                    Id = 42,
                    EpisodeName = "Rose",
                    Overview = "Rose Tyler stumbles across a man called The Doctor...",
                    ImdbId = "tt0562992",
                    AiredEpisodeNumber = 1,
                    AiredSeason = 1,
                    FirstAired = "2005-03-26",
                    LastUpdated = 1477941112
                }
            };

            episodesClient.GetAsync(episode.TheTvDbId).Returns(response);

            await fetcher.PopulateEpisodeAsync(episode);

            var record = response.Data;

            Assert.Equal(record.EpisodeName, episode.Title);
            Assert.Equal(record.Overview, episode.Description);
            Assert.Equal(record.ImdbId, episode.ImdbId);
            Assert.Equal(record.AiredEpisodeNumber, episode.Number);
            Assert.Equal(record.AiredSeason, episode.SeasonNumber);

            Assert.Equal(new DateTime(2005, 3, 26), episode.FirstAired);

            Assert.Equal(new DateTime(2016, 10, 31, 19, 11, 52), episode.LastUpdated);
        }
        // ReSharper disable once InconsistentNaming
        public async Task PopulateEpisodeAsync_should_call_the_client()
        {
            var episodesClient = Substitute.For<IEpisodesClient>();

            var fetcher = new EpisodeFetcher(episodesClient, Substitute.For<IAdvancedEpisodeClient>(),
                Substitute.For<IAdvancedSeriesClient>());

            var episode = new Episode
            {
                TheTvDbId = 42
            };

            var response = new TvDbResponse<EpisodeRecord>
            {
                Data = new EpisodeRecord
                {
                    Id = 42,
                    AiredSeason = 1,
                    AiredEpisodeNumber = 1
                }
            };

            episodesClient.GetAsync(episode.TheTvDbId).Returns(response);

            await fetcher.PopulateEpisodeAsync(episode);

            await episodesClient.Received().GetAsync(episode.TheTvDbId);
        }