public void TestReviewsCreate()
        {
            //Arrange
            FakeRestaurantRepository fakeRestaurantRepository = new FakeRestaurantRepository();
            FakeReviewRepository     fakeReviewRepository     = new FakeReviewRepository();
            ReviewsController        controller = new ReviewsController(fakeRestaurantRepository, fakeReviewRepository);
            ReviewsCreateVM          vm         = new ReviewsCreateVM(fakeRestaurantRepository);
            string e2RestName = "McD";

            //Act
            var result  = controller.Create(vm) as ActionResult;
            var result2 = controller.Create(1) as ViewResult;
            var data2   = result2.Model as ReviewsCreateVM;

            //Assert
            Assert.IsNotNull(result);
            Assert.IsNotNull(result2);
            Assert.AreEqual(e2RestName, data2.Restaurants.First(x => x.ID == data2.Review.RestaurantID).Name);
        }
 public ActionResult Create(ReviewsCreateVM vm)
 {
     try
     {
         if (ModelState.IsValid) // server-side validation
         {
             reviewRepository.Add(vm.Review);
             return(RedirectToAction("Index"));
         }
         else
         {
             return(View(ModelState));
         }
     }
     catch (Exception e)
     {
         log.Error($"[Reviews Controller] [Create] Exception thrown: {e.Message}");
         return(View());
     }
 }
 // GET: Reviews/Create
 public ActionResult Create(int?ID)
 {
     try
     {
         ReviewsCreateVM vm;
         if (ID == null)
         {
             vm = new ReviewsCreateVM(restaurantRepository);
         }
         else
         {
             vm = new ReviewsCreateVM((int)ID, restaurantRepository);
         }
         return(View(vm));
     }
     catch (Exception e)
     {
         log.Error($"[Reviews Controller] [Create] Exception thrown: {e.Message}");
         return(RedirectToAction("Index"));
     }
 }