public async Task Create_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 CreateMovieRatingModel { UserName = "******", Rating = 3.5 }; var movieId = (await movieRepository.FirstAsyc()).Id; var actionResult = await controller.CreateAsync(movieId, model) as OkObjectResult; var rating = actionResult.Value as CreateMovieRatingResult; Assert.NotNull(actionResult); Assert.Equal(movieId, rating.MovieId); Assert.Equal(model.Rating, rating.Rating); } } }
public async Task Create_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 CreateMovieRatingModel { UserName = "******", Rating = 5 }; var result = await controller.CreateAsync(-1, model) as NotFoundObjectResult; Assert.NotNull(result); } } }
public async Task <IActionResult> CreateAsync(int movieId, [FromBody] CreateMovieRatingModel 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 user = await _userRepository.FindByUserNameAsync(model.UserName); if (user == null) { return(NotFound($"Coulnd't find any user with user name: {model.UserName}")); } try { var movieRating = await _movieRatingRepository.CreateAsync(movie, user, model.Rating.Value); return(Ok(new CreateMovieRatingResult { MovieId = movieRating.MovieId, RatingId = movieRating.Id, Rating = movieRating.Rating })); } catch (Exception ex) { //Log Exception return(StatusCode(StatusCodes.Status500InternalServerError)); } }