예제 #1
0
        public void CreateCurrectReview_When_ParamsValid()
        {
            var options    = Utils.GetOptions(nameof(CreateCurrectReview_When_ParamsValid));
            var reviewDTO  = TestsModelsSeeder.SeedReviewDTO();
            var user       = TestsModelsSeeder.SeedUser();
            var targetbeer = TestsModelsSeeder.SeedBeer();

            using (var arrangeContext = new BeerOverflowContext(options))
            {
                arrangeContext.Users.Add(user);
                arrangeContext.Beers.Add(targetbeer);
                arrangeContext.SaveChanges();
            }
            using (var assertContext = new BeerOverflowContext(options))
            {
                var sut = new ReviewServices(assertContext);
                var act = sut.CreateReview(reviewDTO);
                assertContext.SaveChanges();
                var result = assertContext.Reviews.ToList()[0];
                Assert.AreEqual(reviewDTO.Name, result.Name);
                Assert.AreEqual(reviewDTO.Rating, result.Rating);
                Assert.AreEqual(reviewDTO.Text, result.Text);
                Assert.AreEqual(reviewDTO.Author, reviewDTO.Author);
            }
        }
예제 #2
0
        public ActionResult Create(ReviewViewModel modelView)
        {
            try
            {
                ApplicationUser user =
                    System.Web.HttpContext.Current.GetOwinContext().GetUserManager <ApplicationUserManager>()
                    .FindById(System.Web.HttpContext.Current.User.Identity.GetUserId());
                var userService = new UsersServices(db);
                var userInfo    = userService.GetUserByEmail(user.Email);

                //error handling , business rules.
                if (modelView.Note.IsEmpty() || modelView.Note.Length > 250)
                {
                    if (modelView.Note.IsEmpty())
                    {
                        ModelState.AddModelError(string.Empty, "Comments cannot be empty");
                    }
                    else if (modelView.Note.Length > 250)
                    {
                        ModelState.AddModelError(string.Empty, "Comments cannot be more that 250 characters");
                    }

                    var reviewInfoModel = GetReviewViewModel(userInfo.UserId);
                    reviewInfoModel.LogUser = userInfo;
                    return(View("Create", reviewInfoModel));
                }

                var reviewService = new ReviewServices(db);
                //create the review out of the viewModel.

                var review = new Review();

                review.Comments           = modelView.Note;
                review.ReviewRatingTypeCd = modelView.ReviewRatingCd;
                review.ServiceTypeCd      = modelView.SystemCd;
                review.UserId             = userInfo.UserId;

                var serviceType = db.ServiceTypes.FirstOrDefault(x => x.ServiceTypeCd == modelView.SystemCd);
                review.ServiceType = serviceType;
                var reviewType =
                    db.ReviewRatingTypes.FirstOrDefault(x => x.ReviewRatingTypeCd == modelView.ReviewRatingCd);
                review.ReviewRatingType = reviewType;

                // review.
                reviewService.CreateReview(review);
                return(RedirectToAction("Index"));
            }
            catch (Exception)
            {
                return(RedirectToAction("Index"));
            }
        }
예제 #3
0
        public void ThrowArgumentException_When_TargetBeerNotValid()
        {
            var options   = Utils.GetOptions(nameof(ThrowArgumentException_When_TargetBeerNotValid));
            var user      = TestsModelsSeeder.SeedUser();
            var reviewDTO = TestsModelsSeeder.SeedReviewDTO();

            using (var arrangeContext = new BeerOverflowContext(options))
            {
                arrangeContext.Users.Add(user);
                arrangeContext.SaveChanges();
            }
            using (var assertContext = new BeerOverflowContext(options))
            {
                var sut = new ReviewServices(assertContext);
                Assert.ThrowsException <ArgumentNullException>(() => sut.CreateReview(reviewDTO));
            }
        }