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); } }
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); }
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); } }
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)); } }
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"); } }
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)); } }
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"); } }
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)); } }
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); } }
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); } }
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)); } }
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); } }
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); } }