public void CreateReviewShould_ReturnFalseIfCantCreateVoucher() { var options = new DbContextOptionsBuilder <CarRentalDbContext>() .UseInMemoryDatabase(databaseName: "CarRental_Database_CreateReview_NoVoucher") .Options; var dbContext = new CarRentalDbContext(options); var user = new ApplicationUser() { Id = Guid.NewGuid().ToString(), Email = "*****@*****.**", FirstName = "Admin", LastName = "LastAdmin" }; var vouchersServiceMock = new Mock <IVouchersService>(); vouchersServiceMock.Setup(x => x.CreateForUser(user.Email)). ReturnsAsync(false); var ordersServiceMock = new Mock <IOrdersService>(); ordersServiceMock.Setup(x => x.DeleteReviewFromOrder(It.IsAny <int>())). ReturnsAsync(true); var reviewsService = new ReviewsService(dbContext, vouchersServiceMock.Object, this.mapper, ordersServiceMock.Object); var random = new Random(); var reviewRating = random.Next(1, 5); var reviewComment = Guid.NewGuid().ToString(); var result = reviewsService.CreateReview(Guid.NewGuid().ToString(), reviewRating, reviewComment).GetAwaiter().GetResult(); Assert.False(result); }
public async Task CreatingSecondReviewThrowsError() { // Arrange var ratingList = this.GetRatings(); var reviewList = this.GetReviews(); var ratingMock = this.GetRatingMock(ratingList); var reviewMock = this.GetReviewMock(reviewList); var reviewService = new ReviewsService(reviewMock.Object, ratingMock.Object, this.mediaRepo); var inputModel = new ReviewInputModel() { CurrentUserRating = 0, MediaId = "2", ReviewText = "Da", Title = "Da", }; // Act Func <Task> act = () => reviewService.CreateReview("2", inputModel); // Assert Exception ex = await Assert.ThrowsAsync <Exception>(act); Assert.Contains("You have already created a review. Delete it to create new one.", ex.Message); }
public async Task CreateReviewsWorksCorrectly() { var ratingList = this.GetRatings(); var reviewList = this.GetReviews(); var ratingMock = this.GetRatingMock(ratingList); var reviewMock = this.GetReviewMock(reviewList); var expectedReviewCount = reviewList.Count + 1; var reviewService = new ReviewsService(reviewMock.Object, ratingMock.Object, this.mediaRepo); var inputModel = new ReviewInputModel() { CurrentUserRating = 0, MediaId = "1", ReviewText = "Da", Title = "Da", }; // Act await reviewService.CreateReview("2", inputModel); // Assert Assert.Equal(expectedReviewCount, reviewMock.Object.All().Count()); Assert.Contains(reviewMock.Object.All(), x => x.Title == inputModel.Title && x.ReviewText == inputModel.ReviewText); }
public async Task CreatingReviewWithoutRatingThrowsError() { // Arrange var ratingList = this.GetRatings(); var reviewList = this.GetReviews(); var ratingMock = this.GetRatingMock(ratingList); var reviewMock = this.GetReviewMock(reviewList); var reviewService = new ReviewsService(reviewMock.Object, ratingMock.Object, this.mediaRepo); var inputModel = new ReviewInputModel() { CurrentUserRating = 0, MediaId = "1", ReviewText = "Da", Title = "Da", }; // Act Func <Task> act = () => reviewService.CreateReview("1", inputModel); // Assert Exception ex = await Assert.ThrowsAsync <Exception>(act); Assert.Contains("You need to rate the media to submit a review.", ex.Message); }
public void CreateReviewShould_SuccessfullyCreateReview() { var options = new DbContextOptionsBuilder <CarRentalDbContext>() .UseInMemoryDatabase(databaseName: "CarRental_Database_CreateReview") .Options; var dbContext = new CarRentalDbContext(options); var user = new ApplicationUser() { Id = Guid.NewGuid().ToString(), Email = "*****@*****.**", FirstName = "Admin", LastName = "LastAdmin" }; var vouchersServiceMock = new Mock <IVouchersService>(); vouchersServiceMock.Setup(x => x.CreateForUser(user.Email)). ReturnsAsync(true); var ordersServiceMock = new Mock <IOrdersService>(); ordersServiceMock.Setup(x => x.DeleteReviewFromOrder(It.IsAny <int>())). ReturnsAsync(true); var reviewsService = new ReviewsService(dbContext, vouchersServiceMock.Object, this.mapper, ordersServiceMock.Object); var order = new Order { Id = Guid.NewGuid().ToString(), ApplicationUserId = user.Id, CarId = 1, PickUpLocationId = 1, ReturnLocationId = 1, Price = 1, }; dbContext.Orders.Add(order); dbContext.SaveChanges(); var random = new Random(); var reviewRating = random.Next(1, 5); var reviewComment = Guid.NewGuid().ToString(); Assert.False(dbContext.Reviews.Any()); var isCreatedReview = reviewsService.CreateReview(order.Id, reviewRating, reviewComment); Assert.True(order.Review != null); }