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);
            }
        }
Esempio n. 3
0
        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);
        }