// happy path public async Task WhenCalledOnValidRatedMovie_ReturnsState() { bool isFavorite = false; bool onWatchlist = false; decimal rating = 9m; await _client.RateMovie(_settings.SessionId, rating, _movie); // Server side (TMDB WebAPI) needs this delay to propagate changes... await Task.Delay(2000); GetMovieDetailsWithAccountStatesResult response = await _client.GetMovieDetailsWithAccountStates(_settings.SessionId, id : _movie, retryCount : 0); _output.WriteLine($"TMDB server's response code {response.HttpStatusCode}"); _output.WriteLine($"TMDB server's response message {response.Json}"); AccountMovieStates states = response.ExtractAccountStates(); PrintAccountMovieStates(states); Assert.True(response.HttpStatusCode == System.Net.HttpStatusCode.OK); Assert.True(states.IsFavorite == isFavorite); Assert.True(states.Rating.Value == rating); Assert.True(states.OnWatchlist == onWatchlist); }
/// <summary> /// tries to POPULATE the existing movie object with details /// </summary> /// <param name="movieToPopulate">Movie object to populate</param> /// <returns>ApiCommunicationServiceResponseBase class extended with AccountMovieStates property</returns> public async Task <TryGetMovieDetailsWithAccountStatesResponse> TryGetMovieDetailsWithAccountStates(MovieDetailModel movieToPopulate, int id, string language = null, int retryCount = 0, int delayMilliseconds = 1000) { var response = await _cachedSearchClient.GetMovieDetailsWithAccountStates(_settings.SessionId, id, language, retryCount, delayMilliseconds); AccountMovieStates states = null; if (response.HttpStatusCode.IsSuccessCode()) { if (movieToPopulate != null) { JsonConvert.PopulateObject(response.Json, movieToPopulate); } if (response.HttpStatusCode == HttpStatusCode.OK) { var jsonSettings = new JsonSerializerSettings() { Error = delegate(object sender, ErrorEventArgs args) { args.ErrorContext.Handled = true; } }; var tmdbResponse = JObject.Parse(response.Json); var result = tmdbResponse["account_states"]; if (result != null) { states = result.ToObject <AccountMovieStates>(JsonSerializer.Create(jsonSettings)); } } } return(new TryGetMovieDetailsWithAccountStatesResponse(response.HttpStatusCode, states)); }
private void PrintAccountMovieStates(AccountMovieStates states) { _output.WriteLine("=========STATES=========="); _output.WriteLine($"movie Id: {states.MovieId}"); _output.WriteLine($"favorite: {states.IsFavorite}"); _output.WriteLine($"rated: {states.Rating?.Value.ToString() ?? "not rated"}"); _output.WriteLine($"on watchlist: {states.OnWatchlist}"); _output.WriteLine("======= END STATES========"); }
// happy path public async Task WhenCalledOnValidMovie_ReturnsState() { bool isFavorite = false; bool onWatchlist = false; GetMovieDetailsWithAccountStatesResult response = await _client.GetMovieDetailsWithAccountStates(_settings.SessionId, id : _movie, retryCount : 0); _output.WriteLine($"TMDB server's response code {response.HttpStatusCode}"); _output.WriteLine($"TMDB server's response message {response.Json}"); AccountMovieStates states = response.ExtractAccountStates(); PrintAccountMovieStates(states); Assert.True(response.HttpStatusCode == System.Net.HttpStatusCode.OK); Assert.True(states.IsFavorite == isFavorite); Assert.True(states.Rating == null); Assert.True(states.OnWatchlist == onWatchlist); }
// happy path public async Task WhenCalledOnValidWatchlistMovie_ReturnsState() { bool isFavorite = false; bool onWatchlist = true; await _client.UpdateWatchlist(_settings.SessionId, "movie", add : true, _movie); GetAccountMovieStatesResult response = await _client.GetAccountMovieStates(_settings.SessionId, mediaId : _movie, guestSessionId : null, retryCount : 0); _output.WriteLine($"TMDB server's response code {response.HttpStatusCode}"); _output.WriteLine($"TMDB server's response message {response.Json}"); AccountMovieStates states = response.DeserializeJsonIntoModel(); PrintAccountMovieStates(states); Assert.True(response.HttpStatusCode == System.Net.HttpStatusCode.OK); Assert.True(states.IsFavorite == isFavorite); Assert.True(states.Rating == null); Assert.True(states.OnWatchlist == onWatchlist); }
public TryGetMovieDetailsWithAccountStatesResponse(HttpStatusCode statusCode, AccountMovieStates accountMovieStates) { HttpStatusCode = statusCode; AccountMovieStates = accountMovieStates; }