public void SaveNewFoodLogEntryTest()
        {
            FoodLogEntry savedFood    = null;
            bool         createCalled = false;
            var          fakeRepo     = new StubIFoodLogEntryRepository()
            {
                CreateFoodLogEntry = (food) =>
                {
                    savedFood    = food;
                    createCalled = true;
                }
            };

            var fakeFoodEntry = new FoodLogEntry
            {
                Id = 12
            };
            var controller = new FoodLogEntriesController(fakeRepo);

            var viewResult   = controller.Create(fakeFoodEntry) as RedirectToRouteResult;
            var redirectPage = viewResult.RouteValues["action"] as string;

            // assert that my create was called in my repo and that the save
            // object is correct
            Assert.IsTrue(createCalled);
            Assert.AreEqual(fakeFoodEntry, savedFood);
            Assert.AreEqual("Index", redirectPage);
        }
        public void BrowseToCreatePageTest()
        {
            var controller = new FoodLogEntriesController(new StubIFoodLogEntryRepository());
            var viewResult = controller.Create() as ViewResult;
            var viewModel  = viewResult.Model as FoodLogEntry;

            // make sure model is correct
            Assert.AreEqual(1, viewModel.Quantity);
            Assert.AreEqual("Apple", viewModel.Description);
            Assert.AreEqual(Convert.ToDateTime("8/25/2105"), viewModel.MealTime);
            Assert.AreEqual(116, viewModel.Calories);
            Assert.AreEqual("fruit, snack", viewModel.Tags);
            Assert.AreEqual(Convert.ToDecimal("0.6"), viewModel.ProteinInGrams);
            Assert.AreEqual(Convert.ToDecimal("0.4"), viewModel.FatInGrams);
            Assert.AreEqual(Convert.ToDecimal("38.8"), viewModel.CarbohydratesInGrams);
            Assert.AreEqual(Convert.ToDecimal("2.0"), viewModel.SodiumInGrams);
        }
        public void SaveNewFoodLogEntryBadModelStateTest()
        {
            using (ShimsContext.Create())
            {
                ShimModelStateDictionary.AllInstances.IsValidGet = (self) => false;

                var foodLogEntry = new FoodLogEntry
                {
                    Id = 10
                };
                var controller = new FoodLogEntriesController(new StubIFoodLogEntryRepository());
                var viewResult = controller.Create(foodLogEntry) as ViewResult;
                var viewModel  = viewResult.Model as FoodLogEntry;

                Assert.AreEqual("", viewResult.ViewName);
                Assert.AreEqual(foodLogEntry, viewModel);
            }
        }