コード例 #1
0
        // 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);
        }
コード例 #2
0
        /// <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));
        }
コード例 #3
0
        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========");
        }
コード例 #4
0
        // 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);
        }
コード例 #5
0
        // 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);
        }
コード例 #6
0
 public TryGetMovieDetailsWithAccountStatesResponse(HttpStatusCode statusCode, AccountMovieStates accountMovieStates)
 {
     HttpStatusCode     = statusCode;
     AccountMovieStates = accountMovieStates;
 }