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>(); }
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))); }
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"); } }
public async Task <TraktSyncHistoryPostResponse> AddWatchedHistoryItemsAsync([NotNull] TraktSyncHistoryPost historyPost) { ValidateHistoryPost(historyPost); return(await QueryAsync(new TraktSyncWatchedHistoryAddRequest(Client) { RequestBody = historyPost })); }
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); }