public async Task Return_True() { var options = TestUtils.GetOptions(nameof(Return_True)); using (var arrangeContext = new MoviesCatalogContext(options)) { arrangeContext.Reviews.Add(TestHelper.TestReview1()); arrangeContext.SaveChanges(); } using (var assertContext = new MoviesCatalogContext(options)) { var sut = new ReviewService(assertContext); Assert.IsTrue(await sut.DidUserAlreadyVoteForMovieAsync (1, TestHelper.TestUser1().Id)); } }
public async Task Return_Null() { var options = TestUtils.GetOptions(nameof(Return_RightActor)); using (var arrangeContext = new MoviesCatalogContext(options)) { arrangeContext.Actors.Add(TestHelper.TestActor1()); arrangeContext.SaveChanges(); } using (var assertContext = new MoviesCatalogContext(options)) { var sut = new ActorService(assertContext); var actor = await sut.GetActorByIdAsync(TestHelper.TestActor1().Id); Assert.AreEqual(actor.Id, TestHelper.TestActor1().Id); } }
public async Task <Review> AddReviewToMovieAsync(int movieId, string userId, string description, double rating) { BusinessValidator.IsInProperRange(description); BusinessValidator.IsRatingInRange(rating); var review = await this.context.Reviews.Where(x => x.UserId == userId && x.MovieId == movieId) .Include(x => x.Movie) .Include(x => x.User) .FirstOrDefaultAsync(); var movie = await this.context.Movies.FindAsync(movieId); var user = await this.context.Users.FindAsync(userId); if (review == null) { review = new Review() { Description = description, Rating = rating }; } else if (!review.IsDeleted) { throw new ArgumentException(string.Format(ServicesConstants.UserAlreadyVoted, user.UserName, movie.Title)); } else if (review.IsDeleted) { review.Description = description; movie.TotalRating -= review.Rating; review.Rating = rating; movie.NumberOfVotes--; } review.Movie = movie; review.MovieId = movie.Id; review.UserId = user.Id; review.CreatedOn = DateTime.Now; if (review.IsDeleted) { review.IsDeleted = false; } else { context.Reviews.Add(review); } if (rating > 0) { movie.NumberOfVotes++; movie.TotalRating += rating; if (movie.NumberOfVotes != 0) { movie.AverageRating = (double)movie.TotalRating / movie.NumberOfVotes; } } context.SaveChanges(); return(review); }