public async Task Test_TraktSyncModule_AddWatchedHistoryItems_ArgumentExceptions()
        {
            string postJson = await TestUtility.SerializeObject(AddHistoryPost);

            postJson.Should().NotBeNullOrEmpty();

            TraktClient client = TestUtility.GetOAuthMockClient(ADD_WATCHED_HISTORY_ITEMS_URI, postJson, HISTORY_POST_RESPONSE_JSON);

            Func <Task <TraktResponse <ITraktSyncHistoryPostResponse> > > act = () => client.Sync.AddWatchedHistoryItemsAsync(null);

            act.Should().Throw <ArgumentNullException>();

            act = () => client.Sync.AddWatchedHistoryItemsAsync(new TraktSyncHistoryPost());
            act.Should().Throw <ArgumentException>();

            ITraktSyncHistoryPost collectionPost = new TraktSyncHistoryPost
            {
                Movies   = new List <ITraktSyncHistoryPostMovie>(),
                Shows    = new List <ITraktSyncHistoryPostShow>(),
                Episodes = new List <ITraktSyncHistoryPostEpisode>()
            };

            act = () => client.Sync.AddWatchedHistoryItemsAsync(collectionPost);
            act.Should().Throw <ArgumentException>();
        }
Exemplo n.º 2
0
        public void TestTraktSyncHistoryPostDefaultConstructor()
        {
            var historyPost = new TraktSyncHistoryPost();

            historyPost.Movies.Should().BeNull();
            historyPost.Shows.Should().BeNull();
            historyPost.Episodes.Should().BeNull();
        }
        public ITraktSyncHistoryPost Build()
        {
            ITraktSyncHistoryPost syncHistoryPost = new TraktSyncHistoryPost();

            AddMovies(syncHistoryPost);
            AddShows(syncHistoryPost);
            AddEpisodes(syncHistoryPost);
            return(syncHistoryPost);
        }
        public override async Task <ITraktSyncHistoryPost> ReadObjectAsync(JsonTextReader jsonReader, CancellationToken cancellationToken = default)
        {
            if (jsonReader == null)
            {
                return(await Task.FromResult(default(ITraktSyncHistoryPost)));
            }

            if (await jsonReader.ReadAsync(cancellationToken) && jsonReader.TokenType == JsonToken.StartObject)
            {
                var movieArrayJsonReader              = new SyncHistoryPostMovieArrayJsonReader();
                var showArrayJsonReader               = new SyncHistoryPostShowArrayJsonReader();
                var episodeArrayJsonReader            = new SyncHistoryPostEpisodeArrayJsonReader();
                ITraktSyncHistoryPost syncHistoryPost = new TraktSyncHistoryPost();

                while (await jsonReader.ReadAsync(cancellationToken) && jsonReader.TokenType == JsonToken.PropertyName)
                {
                    var propertyName = jsonReader.Value.ToString();

                    switch (propertyName)
                    {
                    case JsonProperties.SYNC_HISTORY_POST_PROPERTY_NAME_MOVIES:
                        syncHistoryPost.Movies = await movieArrayJsonReader.ReadArrayAsync(jsonReader, cancellationToken);

                        break;

                    case JsonProperties.SYNC_HISTORY_POST_PROPERTY_NAME_SHOWS:
                        syncHistoryPost.Shows = await showArrayJsonReader.ReadArrayAsync(jsonReader, cancellationToken);

                        break;

                    case JsonProperties.SYNC_HISTORY_POST_PROPERTY_NAME_EPISODES:
                        syncHistoryPost.Episodes = await episodeArrayJsonReader.ReadArrayAsync(jsonReader, cancellationToken);

                        break;

                    default:
                        await JsonReaderHelper.ReadAndIgnoreInvalidContentAsync(jsonReader, cancellationToken);

                        break;
                    }
                }

                return(syncHistoryPost);
            }

            return(await Task.FromResult(default(ITraktSyncHistoryPost)));
        }
Exemplo n.º 5
0
        private void ValidateHistoryPost(TraktSyncHistoryPost historyPost)
        {
            if (historyPost == null)
            {
                throw new ArgumentNullException(nameof(historyPost), "history post must not be null");
            }

            var movies   = historyPost.Movies;
            var shows    = historyPost.Shows;
            var episodes = historyPost.Episodes;

            var bHasNoMovies   = movies == null || !movies.Any();
            var bHasNoShows    = shows == null || !shows.Any();
            var bHasNoEpisodes = episodes == null || !episodes.Any();

            if (bHasNoMovies && bHasNoShows && bHasNoEpisodes)
            {
                throw new ArgumentException("no watched history items set");
            }
        }
Exemplo n.º 6
0
        public async Task <TraktSyncHistoryPostResponse> AddWatchedHistoryItemsAsync([NotNull] TraktSyncHistoryPost historyPost)
        {
            ValidateHistoryPost(historyPost);

            return(await QueryAsync(new TraktSyncWatchedHistoryAddRequest(Client) { RequestBody = historyPost }));
        }
Exemplo n.º 7
0
        public void TestTraktSyncHistoryPostWriteJson()
        {
            var historyPost = new TraktSyncHistoryPost
            {
                Movies = new List <TraktSyncHistoryPostMovie>()
                {
                    new TraktSyncHistoryPostMovie
                    {
                        WatchedAt = DateTime.Parse("2014-09-01T09:10:11.000Z").ToUniversalTime(),
                        Title     = "Batman Begins",
                        Year      = 2005,
                        Ids       = new TraktMovieIds
                        {
                            Trakt = 1,
                            Slug  = "batman-begins-2005",
                            Imdb  = "tt0372784",
                            Tmdb  = 272
                        }
                    },
                    new TraktSyncHistoryPostMovie
                    {
                        Ids = new TraktMovieIds
                        {
                            Imdb = "tt0000111"
                        }
                    }
                },
                Shows = new List <TraktSyncHistoryPostShow>()
                {
                    new TraktSyncHistoryPostShow
                    {
                        Title = "Breaking Bad",
                        Year  = 2008,
                        Ids   = new TraktShowIds
                        {
                            Trakt  = 1,
                            Slug   = "breaking-bad",
                            Tvdb   = 81189,
                            Imdb   = "tt0903747",
                            Tmdb   = 1396,
                            TvRage = 18164
                        }
                    },
                    new TraktSyncHistoryPostShow
                    {
                        Title = "The Walking Dead",
                        Year  = 2010,
                        Ids   = new TraktShowIds
                        {
                            Trakt  = 2,
                            Slug   = "the-walking-dead",
                            Tvdb   = 153021,
                            Imdb   = "tt1520211",
                            Tmdb   = 1402,
                            TvRage = 25056
                        },
                        Seasons = new List <TraktSyncHistoryPostShowSeason>()
                        {
                            new TraktSyncHistoryPostShowSeason
                            {
                                WatchedAt = DateTime.Parse("2014-09-01T09:10:11.000Z").ToUniversalTime(),
                                Number    = 3
                            }
                        }
                    },
                    new TraktSyncHistoryPostShow
                    {
                        Title = "Mad Men",
                        Year  = 2007,
                        Ids   = new TraktShowIds
                        {
                            Trakt  = 4,
                            Slug   = "mad-men",
                            Tvdb   = 80337,
                            Imdb   = "tt0804503",
                            Tmdb   = 1104,
                            TvRage = 16356
                        },
                        Seasons = new List <TraktSyncHistoryPostShowSeason>()
                        {
                            new TraktSyncHistoryPostShowSeason
                            {
                                Number   = 1,
                                Episodes = new List <TraktSyncHistoryPostShowEpisode>()
                                {
                                    new TraktSyncHistoryPostShowEpisode
                                    {
                                        WatchedAt = DateTime.Parse("2014-09-03T09:10:11.000Z").ToUniversalTime(),
                                        Number    = 1
                                    },
                                    new TraktSyncHistoryPostShowEpisode
                                    {
                                        Number = 2
                                    }
                                }
                            }
                        }
                    }
                },
                Episodes = new List <TraktSyncHistoryPostEpisode>()
                {
                    new TraktSyncHistoryPostEpisode
                    {
                        WatchedAt = DateTime.Parse("2014-09-03T09:10:11.000Z").ToUniversalTime(),
                        Ids       = new TraktEpisodeIds
                        {
                            Trakt  = 1061,
                            Tvdb   = 1555111,
                            Imdb   = "tt007404",
                            Tmdb   = 422183,
                            TvRage = 12345
                        }
                    }
                }
            };

            var strJson = JsonConvert.SerializeObject(historyPost);

            strJson.Should().NotBeNullOrEmpty();

            var historyPostFromJson = JsonConvert.DeserializeObject <TraktSyncHistoryPost>(strJson);

            historyPostFromJson.Should().NotBeNull();

            historyPostFromJson.Movies.Should().NotBeNull().And.HaveCount(2);
            historyPostFromJson.Shows.Should().NotBeNull().And.HaveCount(3);
            historyPostFromJson.Episodes.Should().NotBeNull().And.HaveCount(1);

            var movies = historyPostFromJson.Movies.ToArray();

            movies[0].WatchedAt.Should().Be(DateTime.Parse("2014-09-01T09:10:11.000Z").ToUniversalTime());
            movies[0].Title.Should().Be("Batman Begins");
            movies[0].Year.Should().Be(2005);
            movies[0].Ids.Should().NotBeNull();
            movies[0].Ids.Trakt.Should().Be(1U);
            movies[0].Ids.Slug.Should().Be("batman-begins-2005");
            movies[0].Ids.Imdb.Should().Be("tt0372784");
            movies[0].Ids.Tmdb.Should().Be(272U);

            movies[1].WatchedAt.Should().NotHaveValue();
            movies[1].Title.Should().BeNullOrEmpty();
            movies[1].Year.Should().NotHaveValue();
            movies[1].Ids.Should().NotBeNull();
            movies[1].Ids.Trakt.Should().Be(0U);
            movies[1].Ids.Slug.Should().BeNullOrEmpty();
            movies[1].Ids.Imdb.Should().Be("tt0000111");
            movies[1].Ids.Tmdb.Should().BeNull();

            var shows = historyPostFromJson.Shows.ToArray();

            shows[0].WatchedAt.Should().NotHaveValue();
            shows[0].Title.Should().Be("Breaking Bad");
            shows[0].Year.Should().Be(2008);
            shows[0].Ids.Should().NotBeNull();
            shows[0].Ids.Trakt.Should().Be(1U);
            shows[0].Ids.Slug.Should().Be("breaking-bad");
            shows[0].Ids.Tvdb.Should().Be(81189U);
            shows[0].Ids.Imdb.Should().Be("tt0903747");
            shows[0].Ids.Tmdb.Should().Be(1396U);
            shows[0].Ids.TvRage.Should().Be(18164U);
            shows[0].Seasons.Should().BeNull();

            shows[1].WatchedAt.Should().NotHaveValue();
            shows[1].Title.Should().Be("The Walking Dead");
            shows[1].Year.Should().Be(2010);
            shows[1].Ids.Should().NotBeNull();
            shows[1].Ids.Trakt.Should().Be(2U);
            shows[1].Ids.Slug.Should().Be("the-walking-dead");
            shows[1].Ids.Tvdb.Should().Be(153021U);
            shows[1].Ids.Imdb.Should().Be("tt1520211");
            shows[1].Ids.Tmdb.Should().Be(1402U);
            shows[1].Ids.TvRage.Should().Be(25056U);
            shows[1].Seasons.Should().NotBeNull().And.HaveCount(1);

            var show2Seasons = shows[1].Seasons.ToArray();

            show2Seasons[0].WatchedAt.Should().Be(DateTime.Parse("2014-09-01T09:10:11.000Z").ToUniversalTime());
            show2Seasons[0].Number.Should().Be(3);
            show2Seasons[0].Episodes.Should().BeNull();

            shows[2].WatchedAt.Should().NotHaveValue();
            shows[2].Title.Should().Be("Mad Men");
            shows[2].Year.Should().Be(2007);
            shows[2].Ids.Should().NotBeNull();
            shows[2].Ids.Trakt.Should().Be(4U);
            shows[2].Ids.Slug.Should().Be("mad-men");
            shows[2].Ids.Tvdb.Should().Be(80337U);
            shows[2].Ids.Imdb.Should().Be("tt0804503");
            shows[2].Ids.Tmdb.Should().Be(1104U);
            shows[2].Ids.TvRage.Should().Be(16356U);
            shows[2].Seasons.Should().NotBeNull().And.HaveCount(1);

            var show3Seasons = shows[2].Seasons.ToArray();

            show3Seasons[0].WatchedAt.Should().NotHaveValue();
            show3Seasons[0].Number.Should().Be(1);
            show3Seasons[0].Episodes.Should().NotBeNull().And.HaveCount(2);

            var show3Season1Episodes = show3Seasons[0].Episodes.ToArray();

            show3Season1Episodes[0].WatchedAt.Should().Be(DateTime.Parse("2014-09-03T09:10:11.000Z").ToUniversalTime());
            show3Season1Episodes[0].Number.Should().Be(1);

            show3Season1Episodes[1].WatchedAt.Should().NotHaveValue();
            show3Season1Episodes[1].Number.Should().Be(2);

            var episodes = historyPostFromJson.Episodes.ToArray();

            episodes[0].WatchedAt.Should().Be(DateTime.Parse("2014-09-03T09:10:11.000Z").ToUniversalTime());
            episodes[0].Ids.Should().NotBeNull();
            episodes[0].Ids.Trakt.Should().Be(1061U);
            episodes[0].Ids.Tvdb.Should().Be(1555111U);
            episodes[0].Ids.Imdb.Should().Be("tt007404");
            episodes[0].Ids.Tmdb.Should().Be(422183U);
            episodes[0].Ids.TvRage.Should().Be(12345U);
        }