// 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); 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.Value == rating); Assert.True(states.OnWatchlist == onWatchlist); }
// failure path public async Task WhenCalledWithInvalidMovieId_Returns404() { GetAccountMovieStatesResult response = await _client.GetAccountMovieStates(_settings.SessionId, mediaId : _invalidMovie, guestSessionId : null, retryCount : 0); _output.WriteLine($"TMDB server's response code {response.HttpStatusCode}"); Assert.True(response.HttpStatusCode == System.Net.HttpStatusCode.NotFound); }
// happy path public async Task WhenCalledOnValidMovie_ReturnsState() { bool isFavorite = false; bool onWatchlist = false; 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 async Task <GetAccountMovieStatesResult> GetAccountMovieStates(string sessionId, int mediaId, string guestSessionId = null, int retryCount = 0, int delayMilliseconds = 1000) { if (!string.IsNullOrEmpty(guestSessionId)) { throw new NotImplementedException($"Guest session is not supported by the method: {nameof(GetAccountMovieStates)}, parameter: {nameof(guestSessionId)}={guestSessionId}"); } string baseUrl = BASE_Address + BASE_Path + MOVIE_DETAILS_Path + "/" + mediaId + ACCOUNT_STATES_Path; var query = new Dictionary <string, string>(); query.Add(API_KEY_Key, ApiKey); query.Add(SESSION_ID_Key, sessionId); string requestUri = QueryHelpers.AddQueryString(baseUrl, query); GetAccountMovieStatesResult result = await GetResponse <GetAccountMovieStatesResult>(retryCount, delayMilliseconds, requestUri); return(result); }