public void POST_Edit_ShouldSaveBeerChanges()
        {
            // Arrange
            var persistenceContext = new FakePersistenceContext();
            var controller = InitializeController(persistenceContext);
            var model = new EditBeerViewModel { ID = 1, Name = "beer 100", Quantity = 12 };

            // Act
            var result = controller.Edit(model) as ViewResult;

            // Assert
            persistenceContext.Saved.ShouldBeTrue();
        }
        public void POST_Edit_ShouldReturnNotFoundIfBeerDoesNotExists()
        {
            // Arrange
            var persistenceContext = new FakePersistenceContext();
            var controller = InitializeController(persistenceContext);
            var model = new EditBeerViewModel();

            // Act
            var result = controller.Edit(model);

            // Assert
            result.ShouldBeType<HttpNotFoundResult>();
            persistenceContext.Saved.ShouldBeFalse();
        }
        public void POST_Edit_ShouldNotSaveBeerChangesIfModelIsNotValid()
        {
            // Arrange
            var persistenceContext = new FakePersistenceContext();
            var controller = InitializeController(persistenceContext);
            var model = new EditBeerViewModel();

            controller.ModelState.AddModelError("", "");

            // Act
            var result = controller.Edit(model) as ViewResult;

            // Assert
            result.ShouldNotBeNull();
            persistenceContext.Saved.ShouldBeFalse();
        }
        public void Post_Edit_ShouldRedirectToIndex()
        {
            // Arrange
            var controller = InitializeController();
            var model = new EditBeerViewModel(TestData.Beers.First());

            // Act
            var result = controller.Edit(model) as RedirectToRouteResult;

            // Assert
            result.RouteValues["action"].ShouldEqual("Index");
        }
        // GET: Cellar/Edit/5
        public ActionResult Edit(int? id)
        {
            if (id == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }

            var beer = _persistenceContext.Query<Beer>().FindById(id.Value);

            if (beer == null)
            {
                return HttpNotFound();
            }

            var model = new EditBeerViewModel(beer);

            return View(model);
        }