示例#1
0
        public async Task Test_TraktSyncModule_AddRatings_ArgumentExceptions()
        {
            string postJson = await TestUtility.SerializeObject(AddRatingsPost);

            postJson.Should().NotBeNullOrEmpty();

            TraktClient client = TestUtility.GetOAuthMockClient(ADD_RATINGS_URI, postJson, RATINGS_POST_RESPONSE_JSON);

            Func <Task <TraktResponse <ITraktSyncRatingsPostResponse> > > act = () => client.Sync.AddRatingsAsync(null);

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

            act = () => client.Sync.AddRatingsAsync(new TraktSyncRatingsPost());
            act.Should().Throw <ArgumentException>();

            ITraktSyncRatingsPost ratingsPost = new TraktSyncRatingsPost
            {
                Movies   = new List <ITraktSyncRatingsPostMovie>(),
                Shows    = new List <ITraktSyncRatingsPostShow>(),
                Episodes = new List <ITraktSyncRatingsPostEpisode>()
            };

            act = () => client.Sync.AddRatingsAsync(ratingsPost);
            act.Should().Throw <ArgumentException>();
        }
        public void TestTraktSyncRatingsPostDefaultConstructor()
        {
            var ratingsPost = new TraktSyncRatingsPost();

            ratingsPost.Movies.Should().BeNull();
            ratingsPost.Shows.Should().BeNull();
            ratingsPost.Episodes.Should().BeNull();
        }
示例#3
0
        public ITraktSyncRatingsPost Build()
        {
            ITraktSyncRatingsPost syncRatingsPost = new TraktSyncRatingsPost();

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

            if (await jsonReader.ReadAsync(cancellationToken) && jsonReader.TokenType == JsonToken.StartObject)
            {
                var movieArrayJsonReader              = new SyncRatingsPostMovieArrayJsonReader();
                var showArrayJsonReader               = new SyncRatingsPostShowArrayJsonReader();
                var episodeArrayJsonReader            = new SyncRatingsPostEpisodeArrayJsonReader();
                ITraktSyncRatingsPost syncRatingsPost = new TraktSyncRatingsPost();

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

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

                        break;

                    case JsonProperties.SYNC_RATINGS_POST_PROPERTY_NAME_SHOWS:
                        syncRatingsPost.Shows = await showArrayJsonReader.ReadArrayAsync(jsonReader, cancellationToken);

                        break;

                    case JsonProperties.SYNC_RATINGS_POST_PROPERTY_NAME_EPISODES:
                        syncRatingsPost.Episodes = await episodeArrayJsonReader.ReadArrayAsync(jsonReader, cancellationToken);

                        break;

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

                        break;
                    }
                }

                return(syncRatingsPost);
            }

            return(await Task.FromResult(default(ITraktSyncRatingsPost)));
        }
示例#5
0
        private void ValidateRatingsPost(TraktSyncRatingsPost ratingsPost)
        {
            if (ratingsPost == null)
            {
                throw new ArgumentNullException(nameof(ratingsPost), "ratings post must not be null");
            }

            var movies   = ratingsPost.Movies;
            var shows    = ratingsPost.Shows;
            var episodes = ratingsPost.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 ratings items set");
            }
        }
示例#6
0
        public async Task <TraktSyncRatingsRemovePostResponse> RemoveRatingsAsync([NotNull] TraktSyncRatingsPost ratingsRemovePost)
        {
            ValidateRatingsPost(ratingsRemovePost);

            return(await QueryAsync(new TraktSyncRatingsRemoveRequest(Client) { RequestBody = ratingsRemovePost }));
        }
        public void TestTraktSyncRatingsPostWriteJson()
        {
            var ratingsPost = new TraktSyncRatingsPost
            {
                Movies = new List <TraktSyncRatingsPostMovie>()
                {
                    new TraktSyncRatingsPostMovie
                    {
                        RatedAt = DateTime.Parse("2014-09-01T09:10:11.000Z").ToUniversalTime(),
                        Rating  = 5,
                        Title   = "Batman Begins",
                        Year    = 2005,
                        Ids     = new TraktMovieIds
                        {
                            Trakt = 1,
                            Slug  = "batman-begins-2005",
                            Imdb  = "tt0372784",
                            Tmdb  = 272
                        }
                    },
                    new TraktSyncRatingsPostMovie
                    {
                        Rating = 10,
                        Ids    = new TraktMovieIds
                        {
                            Imdb = "tt0000111"
                        }
                    }
                },
                Shows = new List <TraktSyncRatingsPostShow>()
                {
                    new TraktSyncRatingsPostShow
                    {
                        Rating = 9,
                        Title  = "Breaking Bad",
                        Year   = 2008,
                        Ids    = new TraktShowIds
                        {
                            Trakt  = 1,
                            Slug   = "breaking-bad",
                            Tvdb   = 81189,
                            Imdb   = "tt0903747",
                            Tmdb   = 1396,
                            TvRage = 18164
                        }
                    },
                    new TraktSyncRatingsPostShow
                    {
                        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 <TraktSyncRatingsPostShowSeason>()
                        {
                            new TraktSyncRatingsPostShowSeason
                            {
                                Rating = 8,
                                Number = 3
                            }
                        }
                    },
                    new TraktSyncRatingsPostShow
                    {
                        Title = "Mad Men",
                        Year  = 2007,
                        Ids   = new TraktShowIds
                        {
                            Trakt  = 4,
                            Slug   = "mad-men",
                            Tvdb   = 80337,
                            Imdb   = "tt0804503",
                            Tmdb   = 1104,
                            TvRage = 16356
                        },
                        Seasons = new List <TraktSyncRatingsPostShowSeason>()
                        {
                            new TraktSyncRatingsPostShowSeason
                            {
                                Number   = 1,
                                Episodes = new List <TraktSyncRatingsPostShowEpisode>()
                                {
                                    new TraktSyncRatingsPostShowEpisode
                                    {
                                        Rating = 7,
                                        Number = 1
                                    },
                                    new TraktSyncRatingsPostShowEpisode
                                    {
                                        Rating = 8,
                                        Number = 2
                                    }
                                }
                            }
                        }
                    }
                },
                Episodes = new List <TraktSyncRatingsPostEpisode>()
                {
                    new TraktSyncRatingsPostEpisode
                    {
                        Rating = 7,
                        Ids    = new TraktEpisodeIds
                        {
                            Trakt  = 1061,
                            Tvdb   = 1555111,
                            Imdb   = "tt007404",
                            Tmdb   = 422183,
                            TvRage = 12345
                        }
                    }
                }
            };

            var strJson = JsonConvert.SerializeObject(ratingsPost);

            strJson.Should().NotBeNullOrEmpty();

            var ratingsPostFromJson = JsonConvert.DeserializeObject <TraktSyncRatingsPost>(strJson);

            ratingsPostFromJson.Should().NotBeNull();

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

            var movies = ratingsPostFromJson.Movies.ToArray();

            movies[0].RatedAt.Should().Be(DateTime.Parse("2014-09-01T09:10:11.000Z").ToUniversalTime());
            movies[0].Rating.Should().Be(5);
            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].RatedAt.Should().NotHaveValue();
            movies[1].Rating.Should().Be(10);
            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 = ratingsPostFromJson.Shows.ToArray();

            shows[0].RatedAt.Should().NotHaveValue();
            shows[0].Rating.Should().Be(9);
            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].RatedAt.Should().NotHaveValue();
            shows[1].Rating.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].RatedAt.Should().NotHaveValue();
            show2Seasons[0].Rating.Should().Be(8);
            show2Seasons[0].Number.Should().Be(3);
            show2Seasons[0].Episodes.Should().BeNull();

            shows[2].RatedAt.Should().NotHaveValue();
            shows[2].Rating.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].RatedAt.Should().NotHaveValue();
            show3Seasons[0].Rating.Should().NotHaveValue();
            show3Seasons[0].Number.Should().Be(1);
            show3Seasons[0].Episodes.Should().NotBeNull().And.HaveCount(2);

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

            show3Season1Episodes[0].RatedAt.Should().NotHaveValue();
            show3Season1Episodes[0].Rating.Should().Be(7);
            show3Season1Episodes[0].Number.Should().Be(1);

            show3Season1Episodes[1].RatedAt.Should().NotHaveValue();
            show3Season1Episodes[1].Rating.Should().Be(8);
            show3Season1Episodes[1].Number.Should().Be(2);

            var episodes = ratingsPostFromJson.Episodes.ToArray();

            episodes[0].RatedAt.Should().NotHaveValue();
            episodes[0].Rating.Should().Be(7);
            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);
        }