Ejemplo n.º 1
0
        public async Task Succeed_WhenUserNotVoted()
        {
            var options = TestUtils.GetOptions(nameof(Succeed_WhenUserNotVoted));

            using (var arrangeContext = new MoviesCatalogContext(options))
            {
                await arrangeContext.Users.AddAsync(TestHelper.TestUser2());

                await arrangeContext.Movies.AddAsync(TestHelper.TestMovie1());

                await arrangeContext.SaveChangesAsync();
            }

            using (var assertContext = new MoviesCatalogContext(options))
            {
                var sut = new ReviewService(assertContext);

                var review = await sut.AddReviewToMovieAsync(1, TestHelper.TestUser2().Id, "Perfect movie.", 5);

                var movie = review.Movie;
                Assert.IsTrue(movie.TotalRating == 10);
                Assert.IsTrue(movie.AverageRating == 5);
                Assert.IsTrue(movie.NumberOfVotes == 2);
                Assert.IsTrue(assertContext.Reviews.Count() == 1);
            }
        }
Ejemplo n.º 2
0
        public async Task <Review> DeleteReviewAsync(int reviewId, string userId)
        {
            var review = await this.context.Reviews.Where(x => x.Id == reviewId && !x.IsDeleted)
                         .Include(x => x.Movie)
                         .FirstOrDefaultAsync();

            var user = this.context.Users.Find(userId);

            if (review.UserId != user.Id)
            {
                throw new ArgumentException(string.Format(ServicesConstants.ReviewNotFromUser,
                                                          user.UserName));
            }

            var movie = review.Movie;

            review.IsDeleted   = true;
            movie.TotalRating -= review.Rating;
            movie.NumberOfVotes--;
            if (movie.NumberOfVotes != 0)
            {
                movie.AverageRating = (double)movie.TotalRating / movie.NumberOfVotes;
            }
            else
            {
                movie.AverageRating = movie.TotalRating;
            }

            await context.SaveChangesAsync();

            return(review);
        }
Ejemplo n.º 3
0
        public async Task Succeed_ReturnCollection()
        {
            var options = TestUtils.GetOptions(nameof(Succeed_ReturnCollection));

            using (var arrangeContext = new MoviesCatalogContext(options))
            {
                await arrangeContext.Movies.AddAsync(TestHelper.TestMovie100());

                await arrangeContext.Actors.AddAsync(TestHelper.TestActor100());

                await arrangeContext.Actors.AddAsync(TestHelper.TestActor200());

                await arrangeContext.MoviesActors.AddAsync(TestHelper.TestMoviesActors100());

                await arrangeContext.MoviesActors.AddAsync(TestHelper.TestMoviesActors200());

                await arrangeContext.SaveChangesAsync();
            }

            using (var assertContext = new MoviesCatalogContext(options))
            {
                var sut = new MovieService(assertContext);

                var allActorsByMovie = await sut.AllActorsByMovieAsync(100);

                Assert.AreEqual(allActorsByMovie.Count, 2);
            }
        }
Ejemplo n.º 4
0
        public async Task ReturnCorrect_RatingIsNotSet()
        {
            var options = TestUtils.GetOptions(nameof(ReturnCorrect_RatingIsNotSet));

            using (var arrangeContext = new MoviesCatalogContext(options))
            {
                await arrangeContext.Reviews.AddAsync(TestHelper.TestReview3());

                await arrangeContext.SaveChangesAsync();
            }

            using (var assertContext = new MoviesCatalogContext(options))
            {
                var sut = new ReviewService(assertContext);

                var rating = await sut.AddReviewToMovieAsync(TestHelper.TestMovie2().Id, TestHelper.TestUser1().Id, "Perfect movie!", 3);

                var movie = rating.Movie;

                Assert.AreEqual(8, movie.TotalRating);
                Assert.IsTrue(movie.AverageRating == 4);
                Assert.IsTrue(movie.NumberOfVotes == 2);
                Assert.IsTrue(assertContext.Reviews.Count() == 1);
            }
        }
        public async Task Succeed_ReturnCollection()
        {
            var options = TestUtils.GetOptions(nameof(Succeed_ReturnCollection));

            using (var arrangeContext = new MoviesCatalogContext(options))
            {
                await arrangeContext.Genres.AddAsync(TestHelper.TestGenre1());

                await arrangeContext.Movies.AddAsync(TestHelper.TestMovie100());

                await arrangeContext.Movies.AddAsync(TestHelper.TestMovie200());

                await arrangeContext.MoviesGenres.AddAsync(TestHelper.MoviesGenres1());

                await arrangeContext.MoviesGenres.AddAsync(TestHelper.MoviesGenres2());

                await arrangeContext.SaveChangesAsync();
            }

            using (var assertContext = new MoviesCatalogContext(options))
            {
                var sut = new GenreService(assertContext);

                var moviesByGenre = await sut.ShowMoviesByGenreAsync("Drama");

                Assert.AreEqual(moviesByGenre.Count, 2);
            }
        }
        public async Task ThrowExeption_ReviewIsDeleted()
        {
            var options = TestUtils.GetOptions(nameof(ThrowExeption_ReviewIsDeleted));

            using (var arrangeContext = new MoviesCatalogContext(options))
            {
                await arrangeContext.Reviews.AddAsync(TestHelper.TestReview3());

                await arrangeContext.SaveChangesAsync();
            }

            using (var assertContext = new MoviesCatalogContext(options))
            {
                var sut = new ReviewService(assertContext);

                var ex = await Assert.ThrowsExceptionAsync <ArgumentException>(() => sut.EditReviewAsync(TestHelper.TestReview3(), TestHelper.TestUser2().Id, 3, "very nice movie"));

                Assert.AreEqual(ex.Message, string.Format(ServicesConstants.ReviewNotPresent));
            }
        }
Ejemplo n.º 7
0
        public async Task Return_Succeed()
        {
            var options = TestUtils.GetOptions(nameof(Return_Succeed));

            using (var arrangeContext = new MoviesCatalogContext(options))
            {
                await arrangeContext.Reviews.AddAsync(TestHelper.TestReview1());

                await arrangeContext.SaveChangesAsync();
            }

            using (var assertContext = new MoviesCatalogContext(options))
            {
                var sut = new ReviewService(assertContext);

                var review = await sut.DeleteReviewAsync(TestHelper.TestReview1().Id, TestHelper.TestUser1().Id);

                Assert.IsTrue(review.IsDeleted);
            }
        }
        public async Task Return_RightActor()
        {
            var options = TestUtils.GetOptions(nameof(Return_RightActor));

            using (var arrangeContext = new MoviesCatalogContext(options))
            {
                await arrangeContext.Actors.AddAsync(TestHelper.TestActor1());

                await arrangeContext.SaveChangesAsync();
            }

            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 Succeed_Return()
        {
            var options = TestUtils.GetOptions(nameof(Succeed_Return));

            using (var arrangeContext = new MoviesCatalogContext(options))
            {
                await arrangeContext.Movies.AddAsync(TestHelper.TestMovie100());

                await arrangeContext.SaveChangesAsync();
            }

            using (var assertContext = new MoviesCatalogContext(options))
            {
                var sut = new MovieService(assertContext);

                var getMovieById = await sut.GetMovieByIdAsync(100);

                Assert.AreEqual(getMovieById.Title, "Movie 100");
            }
        }
Ejemplo n.º 10
0
        public async Task Succeed_ReturnCheck()
        {
            var options = TestUtils.GetOptions(nameof(Succeed_ReturnCheck));

            using (var arrangeContext = new MoviesCatalogContext(options))
            {
                await arrangeContext.Movies.AddAsync(TestHelper.TestMovie100());

                await arrangeContext.SaveChangesAsync();
            }

            using (var assertContext = new MoviesCatalogContext(options))
            {
                var sut = new MovieService(assertContext);

                var isMovieExists = await sut.IsMovieExistAsync("Movie 100");

                Assert.IsTrue(isMovieExists);
            }
        }
        public async Task Return_RightReview()
        {
            var options = TestUtils.GetOptions(nameof(Return_RightReview));

            using (var arrangeContext = new MoviesCatalogContext(options))
            {
                await arrangeContext.Reviews.AddAsync(TestHelper.TestReview1());

                await arrangeContext.SaveChangesAsync();
            }

            using (var assertContext = new MoviesCatalogContext(options))
            {
                var sut = new ReviewService(assertContext);

                var review = await sut.GetReviewByIdAsync(1);

                Assert.AreEqual(review.Id, 1);
            }
        }
        public async Task ThrowsExeption_WhenActorExistInMovie()
        {
            var options = TestUtils.GetOptions(nameof(ThrowsExeption_WhenActorExistInMovie));

            using (var arrangeContext = new MoviesCatalogContext(options))
            {
                await arrangeContext.MoviesActors.AddAsync(TestHelper.MoviesActors1());

                await arrangeContext.SaveChangesAsync();
            }

            using (var assertContext = new MoviesCatalogContext(options))
            {
                var sut = new ActorService(assertContext);

                await Assert.ThrowsExceptionAsync <ArgumentException>(() => sut.AddActorToMovieAsync(TestHelper.TestMovie1().Id, TestHelper.TestActor1().Id));

                //Assert.AreEqual(ex.Message, string.Format(ServicesConstants.UserAlreadyVoted,
                //                                           TestHelper.TestUser1().UserName, TestHelper.TestMovie1().Title));
            }
        }
Ejemplo n.º 13
0
        public async Task Succeed_ReturnActor()
        {
            var options = TestUtils.GetOptions(nameof(Succeed_ReturnActor));

            using (var arrangeContext = new MoviesCatalogContext(options))
            {
                await arrangeContext.Actors.AddAsync(TestHelper.TestActor1());

                await arrangeContext.SaveChangesAsync();
            }

            using (var assertContext = new MoviesCatalogContext(options))
            {
                var sut = new ActorService(assertContext);

                var actor = await sut.UpdateActorAsync(TestHelper.TestActor1(), "image1.jpg", "Very nice one");

                Assert.AreEqual(actor.Biography, "Very nice one");
                Assert.AreEqual(actor.Picture, "image1.jpg");
            }
        }
Ejemplo n.º 14
0
        public async Task ThrowExeption_WhenUserIsVoted()
        {
            var options = TestUtils.GetOptions(nameof(ThrowExeption_WhenUserIsVoted));

            using (var arrangeContext = new MoviesCatalogContext(options))
            {
                await arrangeContext.Reviews.AddAsync(TestHelper.TestReview1());

                await arrangeContext.SaveChangesAsync();
            }

            using (var assertContext = new MoviesCatalogContext(options))
            {
                var sut = new ReviewService(assertContext);

                var ex = await Assert.ThrowsExceptionAsync <ArgumentException>(() => sut.AddReviewToMovieAsync(TestHelper.TestMovie1().Id, TestHelper.TestUser1().Id, "Perfect movie!", 3));

                Assert.AreEqual(ex.Message, string.Format(ServicesConstants.UserAlreadyVoted,
                                                          TestHelper.TestUser1().UserName, TestHelper.TestMovie1().Title));
            }
        }
Ejemplo n.º 15
0
        public async Task Return_RightUser()
        {
            var options = TestUtils.GetOptions(nameof(Return_RightUser));

            using (var arrangeContext = new MoviesCatalogContext(options))
            {
                await arrangeContext.Users.AddAsync(TestHelper.TestUser1());

                await arrangeContext.SaveChangesAsync();
            }

            using (var assertContext = new MoviesCatalogContext(options))
            {
                var mockedService = new Mock <IServiceProvider>();
                var sut           = new UserService(assertContext, mockedService.Object);

                var user = await sut.GetUserByIdAsync(TestHelper.TestUser1().Id);

                Assert.AreEqual(user.Id, TestHelper.TestUser1().Id);
            }
        }
        public async Task Succeed_AddActorWhenDoesNotExistInMovie()
        {
            var options = TestUtils.GetOptions(nameof(Succeed_AddActorWhenDoesNotExistInMovie));

            using (var arrangeContext = new MoviesCatalogContext(options))
            {
                await arrangeContext.Actors.AddAsync(TestHelper.TestActor1());

                await arrangeContext.Movies.AddAsync(TestHelper.TestMovie1());

                await arrangeContext.SaveChangesAsync();
            }

            using (var assertContext = new MoviesCatalogContext(options))
            {
                var sut = new ActorService(assertContext);

                var movie = await sut.AddActorToMovieAsync(TestHelper.TestMovie1().Id, TestHelper.TestActor1().Id);

                Assert.AreEqual(movie.MoviesActors.Count, 1);
            }
        }
Ejemplo n.º 17
0
        public async Task Return_RightCollection()
        {
            var options = TestUtils.GetOptions(nameof(Return_RightCollection));

            using (var arrangeContext = new MoviesCatalogContext(options))
            {
                await arrangeContext.Genres.AddAsync(TestHelper.TestGenre1());

                await arrangeContext.Genres.AddAsync(TestHelper.TestGenre2());

                await arrangeContext.SaveChangesAsync();
            }

            using (var assertContext = new MoviesCatalogContext(options))
            {
                var sut = new GenreService(assertContext);

                var genres = await sut.GetAllGenresAsync();

                Assert.AreEqual(genres.Count, 2);
            }
        }
Ejemplo n.º 18
0
        public async Task ThrowExeption_WhenReviewNotFromUser()
        {
            var options = TestUtils.GetOptions(nameof(ThrowExeption_WhenReviewNotFromUser));

            using (var arrangeContext = new MoviesCatalogContext(options))
            {
                await arrangeContext.Reviews.AddAsync(TestHelper.TestReview1());

                await arrangeContext.Users.AddAsync(TestHelper.TestUser2());

                await arrangeContext.SaveChangesAsync();
            }

            using (var assertContext = new MoviesCatalogContext(options))
            {
                var sut = new ReviewService(assertContext);

                var ex = await Assert.ThrowsExceptionAsync <ArgumentException>(() => sut.DeleteReviewAsync(TestHelper.TestReview1().Id, TestHelper.TestUser2().Id));

                Assert.AreEqual(ex.Message, string.Format(ServicesConstants.ReviewNotFromUser, TestHelper.TestUser2().UserName));
            }
        }
Ejemplo n.º 19
0
        public async Task Return_RightCollection()
        {
            var options = TestUtils.GetOptions(nameof(Return_RightCollection));

            using (var arrangeContext = new MoviesCatalogContext(options))
            {
                await arrangeContext.Actors.AddAsync(TestHelper.TestActor1());

                await arrangeContext.Actors.AddAsync(TestHelper.TestActor3());

                await arrangeContext.Actors.AddAsync(TestHelper.TestActor4());

                await arrangeContext.SaveChangesAsync();
            }

            using (var assertContext = new MoviesCatalogContext(options))
            {
                var  sut    = new ActorService(assertContext);
                char symbol = 'i';
                var  actors = await sut.ShowActorsStartWithSymbolAsync(symbol);

                Assert.AreEqual(actors.Count, 2);
            }
        }
Ejemplo n.º 20
0
        public async Task SetCorrect_WhenReviewIsNotActive()
        {
            var options = TestUtils.GetOptions(nameof(SetCorrect_WhenReviewIsNotActive));

            using (var arrangeContext = new MoviesCatalogContext(options))
            {
                await arrangeContext.Users.AddAsync(TestHelper.TestUser1());

                await arrangeContext.Reviews.AddAsync(TestHelper.TestReview2());

                await arrangeContext.SaveChangesAsync();
            }

            using (var assertContext = new MoviesCatalogContext(options))
            {
                var sut = new ReviewService(assertContext);

                var review = await sut.AddReviewToMovieAsync(TestHelper.TestMovie1().Id, TestHelper.TestUser1().Id, "Perfect movie!", 3);

                Assert.AreEqual("Perfect movie!", review.Description);
                Assert.AreEqual(3, review.Rating);
                Assert.IsTrue(!review.IsDeleted);
            }
        }
        public async Task Succeed_WhenReviewIsFromUser()
        {
            var options = TestUtils.GetOptions(nameof(Succeed_WhenReviewIsFromUser));

            using (var arrangeContext = new MoviesCatalogContext(options))
            {
                await arrangeContext.Reviews.AddAsync(TestHelper.TestReview1());

                await arrangeContext.SaveChangesAsync();
            }

            using (var assertContext = new MoviesCatalogContext(options))
            {
                var sut = new ReviewService(assertContext);

                var review = await sut.EditReviewAsync(TestHelper.TestReview1(), TestHelper.TestUser1().Id, 3, "Very nice movie");

                var movie = review.Movie;

                Assert.IsTrue(movie.TotalRating == 4);
                Assert.IsTrue(movie.NumberOfVotes == 1);
                Assert.IsTrue(assertContext.Reviews.Count() == 1);
            }
        }