Пример #1
0
        public void Test_TraktPost_UserCustomListItemsPostBuilder_AddShowAndSeasonsCollection()
        {
            ITraktShow show = new TraktShow
            {
                Ids = new TraktShowIds
                {
                    Trakt  = 1,
                    Slug   = "show-title",
                    Imdb   = "ttshowtitle",
                    Tmdb   = 1,
                    Tvdb   = 1,
                    TvRage = 1
                }
            };

            var seasons = new PostSeasons
            {
                1,
                { 2, new PostEpisodes {
                      1, 2
                  } }
            };

            ITraktUserCustomListItemsPost userCustomListItemsPost = TraktPost.NewUserCustomListItemsPost()
                                                                    .AddShowAndSeasonsCollection(show).WithSeasons(seasons)
                                                                    .Build();

            userCustomListItemsPost.Should().NotBeNull();
            userCustomListItemsPost.Shows.Should().NotBeNull().And.HaveCount(1);

            ITraktUserCustomListItemsPostShow postShow = userCustomListItemsPost.Shows.ToArray()[0];

            postShow.Ids.Should().NotBeNull();
            postShow.Ids.Trakt.Should().Be(1U);
            postShow.Ids.Slug.Should().Be("show-title");
            postShow.Ids.Imdb.Should().Be("ttshowtitle");
            postShow.Ids.Tmdb.Should().Be(1U);
            postShow.Ids.Tvdb.Should().Be(1U);
            postShow.Ids.TvRage.Should().Be(1U);
            postShow.Seasons.Should().NotBeNull().And.HaveCount(2);

            ITraktUserCustomListItemsPostShowSeason[] showSeasons = postShow.Seasons.ToArray();

            showSeasons[0].Number.Should().Be(1);
            showSeasons[0].Episodes.Should().BeNull();

            showSeasons[1].Number.Should().Be(2);
            showSeasons[1].Episodes.Should().NotBeNull().And.HaveCount(2);

            ITraktUserCustomListItemsPostShowEpisode[] showSeasonPeople = showSeasons[1].Episodes.ToArray();

            showSeasonPeople[0].Number.Should().Be(1);
            showSeasonPeople[1].Number.Should().Be(2);

            userCustomListItemsPost.Movies.Should().NotBeNull().And.BeEmpty();
            userCustomListItemsPost.People.Should().NotBeNull().And.BeEmpty();
        }
Пример #2
0
        public void Test_TraktPost_UserCustomListItemsPostBuilder_WithShow()
        {
            ITraktShow show = new TraktShow
            {
                Ids = new TraktShowIds
                {
                    Trakt  = 1,
                    Slug   = "show-title",
                    Imdb   = "ttshowtitle",
                    Tmdb   = 1,
                    Tvdb   = 1,
                    TvRage = 1
                }
            };

            ITraktUserCustomListItemsPost userCustomListItemsPost = TraktPost.NewUserCustomListItemsPost()
                                                                    .WithShow(show)
                                                                    .Build();

            userCustomListItemsPost.Should().NotBeNull();
            userCustomListItemsPost.Shows.Should().NotBeNull().And.HaveCount(1);

            ITraktUserCustomListItemsPostShow postShow = userCustomListItemsPost.Shows.ToArray()[0];

            postShow.Ids.Should().NotBeNull();
            postShow.Ids.Trakt.Should().Be(1U);
            postShow.Ids.Slug.Should().Be("show-title");
            postShow.Ids.Imdb.Should().Be("ttshowtitle");
            postShow.Ids.Tmdb.Should().Be(1U);
            postShow.Ids.Tvdb.Should().Be(1U);
            postShow.Ids.TvRage.Should().Be(1U);
            postShow.Seasons.Should().BeNull();

            userCustomListItemsPost.Movies.Should().NotBeNull().And.BeEmpty();
            userCustomListItemsPost.People.Should().NotBeNull().And.BeEmpty();
        }
Пример #3
0
        /// <summary>Adds a <see cref="ITraktShow" />, which will be added to the user custom list items post.</summary>
        /// <param name="show">The Trakt show, which will be added.</param>
        /// <param name="seasons">
        /// An <see cref="PostSeasons" /> instance, containing season and episode numbers.<para />
        /// If it contains episode numbers, only the episodes with the given episode numbers will be added to the custom list.
        /// </param>
        /// <returns>The current <see cref="TraktUserCustomListItemsPostBuilder" /> instance.</returns>
        /// <exception cref="ArgumentNullException">
        /// Thrown, if the given show is null.
        /// Thrown, if the given show ids are null.
        /// </exception>
        /// <exception cref="ArgumentException">
        /// Thrown, if the given show has no valid ids set.
        /// Thrown, if the given show has an year set, which has more or less than four digits.
        /// </exception>
        /// <exception cref="ArgumentOutOfRangeException">
        /// Thrown, if at least one of the given season numbers in <paramref name="seasons" /> is below zero.
        /// Thrown, if at least one of the given episode numbers in <paramref name="seasons" /> is below zero.
        /// </exception>
        public TraktUserCustomListItemsPostBuilder AddShow(ITraktShow show, PostSeasons seasons)
        {
            ValidateShow(show);

            if (seasons == null)
            {
                throw new ArgumentNullException(nameof(seasons));
            }

            EnsureShowsListExists();

            var showSeasons = new List <ITraktUserCustomListItemsPostShowSeason>();

            foreach (PostSeason season in seasons)
            {
                if (season.Number < 0)
                {
                    throw new ArgumentOutOfRangeException("at least one season number not valid", nameof(season));
                }

                var showSingleSeason = new TraktUserCustomListItemsPostShowSeason
                {
                    Number = season.Number
                };

                if (season.Episodes?.Count() > 0)
                {
                    var showEpisodes = new List <ITraktUserCustomListItemsPostShowEpisode>();

                    foreach (PostEpisode episode in season.Episodes)
                    {
                        if (episode.Number < 0)
                        {
                            throw new ArgumentOutOfRangeException("at least one episode number not valid", nameof(seasons));
                        }

                        showEpisodes.Add(new TraktUserCustomListItemsPostShowEpisode
                        {
                            Number = episode.Number
                        });
                    }

                    showSingleSeason.Episodes = showEpisodes;
                }

                showSeasons.Add(showSingleSeason);
            }

            ITraktUserCustomListItemsPostShow existingShow = _listItemsPost.Shows.FirstOrDefault(s => s.Ids == show.Ids);

            if (existingShow != null)
            {
                existingShow.Seasons = showSeasons;
            }
            else
            {
                var listItemsShow = new TraktUserCustomListItemsPostShow
                {
                    Ids     = show.Ids,
                    Seasons = showSeasons
                };

                (_listItemsPost.Shows as List <ITraktUserCustomListItemsPostShow>)?.Add(
                    new TraktUserCustomListItemsPostShow
                {
                    Ids     = show.Ids,
                    Seasons = showSeasons
                });
            }

            return(this);
        }