Example #1
0
        public async Task Update_ShouldReturnOK()
        {
            using (var context = InMemomryDbContext.Create())
            {
                var movieRepository  = new MovieRepository(context);
                var userRepository   = new UserRepository(context);
                var ratingRepository = new MovieRatingRepository(context);

                using (var controller = new RatingsController(movieRepository, userRepository, ratingRepository))
                {
                    var model = new UpdateMovieRatingModel
                    {
                        UserName = "******",
                        Rating   = 3.5
                    };

                    var movieRating = await ratingRepository.FirstAsyc();

                    var actionResult = await controller.UpdateAsync(movieRating.MovieId, movieRating.Id, model) as OkObjectResult;

                    var rating = actionResult.Value as UpdateMovieRatingResult;

                    Assert.NotNull(actionResult);
                    Assert.Equal(movieRating.MovieId, rating.MovieId);
                    Assert.Equal(movieRating.Id, rating.RatingId);
                    Assert.Equal(model.Rating, rating.Rating);
                }
            }
        }
Example #2
0
        public async Task Update_ShouldReturnNotFound()
        {
            using (var context = InMemomryDbContext.Create())
            {
                var movieRepository  = new MovieRepository(context);
                var userRepository   = new UserRepository(context);
                var ratingRepository = new MovieRatingRepository(context);

                using (var controller = new RatingsController(movieRepository, userRepository, ratingRepository))
                {
                    var model = new UpdateMovieRatingModel
                    {
                        UserName = "******",
                        Rating   = 5
                    };
                    var result = await controller.UpdateAsync(-1, -1, model) as NotFoundObjectResult;

                    Assert.NotNull(result);
                }
            }
        }
Example #3
0
        public async Task <IActionResult> UpdateAsync(int movieId, int ratingId, [FromBody] UpdateMovieRatingModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var movie = await _movieRepository.FindByAsync(movieId);

            if (movie == null)
            {
                return(NotFound($"Coulnd't find any movie with id {movieId}"));
            }

            var movieRating = await _movieRatingRepository.FindByAsync(ratingId, model.UserName);

            if (movieRating == null || movieRating.MovieId != movie.Id)
            {
                return(NotFound($"Coulnd't find any movie rating with id {ratingId} and user name {model.UserName}"));
            }

            try
            {
                movieRating = await _movieRatingRepository.UpdateAsync(movieRating, model.Rating.Value);

                return(Ok(new UpdateMovieRatingResult
                {
                    MovieId = movieRating.MovieId,
                    RatingId = movieRating.Id,
                    Rating = movieRating.Rating
                }));
            }
            catch (Exception ex)
            {
                //Log Exception
                return(StatusCode(StatusCodes.Status500InternalServerError));
            }
        }