コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
        }