// failure path public async Task WhenAddingInvalidMovie_Returns404() { int movieToAdd = _invalidMovieId; UpdateFavoriteListResult response = await _client.UpdateFavoriteList(_settings.SessionId, "movie", true, movieToAdd); _output.WriteLine($"Server responded: {response.HttpStatusCode}"); Assert.True(response.HttpStatusCode == System.Net.HttpStatusCode.NotFound); }
// adds or removes media from favorite list // media type: "movie" OR "tv" //TODO refactor media type to enum public async Task <UpdateFavoriteListResult> UpdateFavoriteList(string sessionId, string mediaType, bool add, int mediaId, int?accountId = null, int retryCount = 0, int delayMilliseconds = 1000) { // no mistake here: missing "account_id" parameter add the string literal "{account_id}" as paths segment string baseUrl = BASE_Address + BASE_Path + ACCOUNT_DETAILS_Path + "/" + (accountId.HasValue ? accountId.Value.ToString() : "{account_id}") + FAVORITE_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); var jsonObj = new { media_type = mediaType, media_id = mediaId, favorite = add }; string json = JsonConvert.SerializeObject(jsonObj); var content = new StringContent(json, encoding: Encoding.UTF8, mediaType: "application/json"); HttpRequestMessage request = new HttpRequestMessage { Content = content, Method = HttpMethod.Post, RequestUri = new Uri(requestUri) }; HttpResponseMessage response = null; int counter = retryCount; try { response = await HttpClient.SendAsync(request); } catch { } while (response?.IsSuccessStatusCode != true && counter > 0) { await Task.Delay(delayMilliseconds); try { --counter; response = await HttpClient.SendAsync(request); } catch { } } UpdateFavoriteListResult result = new UpdateFavoriteListResult { HttpStatusCode = response?.StatusCode ?? HttpStatusCode.RequestTimeout }; await ReadResponseAsStringIntoResultWhenSafe(result, response); return(result); }
// happy path public async Task WhenAddingMovieNotOnFavoriteList_AddsMovie() { int movieToAdd = _movie1; UpdateFavoriteListResult response = await _client.UpdateFavoriteList(_settings.SessionId, "movie", true, movieToAdd); _output.WriteLine($"Server responded: {response.HttpStatusCode}"); _output.WriteLine(response.Json); var getFavorites = await _client.GetFavoriteMovies(_settings.SessionId); Assert.True(response.HttpStatusCode.IsSuccessCode()); Assert.Contains(movieToAdd.ToString(), getFavorites.Json); }