public void ShouldEditMealCorrectly() { // Arrange Mock <IMealRepository> mealMock = new Mock <IMealRepository>(); Mock <IStudentRepository> studentMock = new Mock <IStudentRepository>(); Student student = new Student() { Id = "101", FirstName = "Ginni", LastName = "Wassell" }; Meal meal = new Meal() { Id = 100, Title = "Compound - Strawberry", Description = " ", Price = 1.50, Date = DateTime.Now.AddDays(6), MaxGuests = 1, }; ClaimsPrincipal identity = new ClaimsPrincipal(new ClaimsIdentity(new Claim[] { new Claim(ClaimTypes.NameIdentifier, student.Id) })); meal.Cook = student; student.CookAtMeals.Add(meal); mealMock.Setup(m => m.Meals).Returns(new List <Meal>() { meal }); mealMock.Setup(m => m.Update(It.IsAny <Meal>())).Returns((int mealId) => { if (meal.Cook.Id == student.Id && meal.Title != null && meal.MaxGuests > 0 && meal.Price >= 0) { return(true); } return(false); }); MealController controller = new MealController(mealMock.Object, studentMock.Object) { ControllerContext = new ControllerContext() { HttpContext = new DefaultHttpContext() { User = identity } } }; // Act ViewResult viewResult = controller.Edit(meal.Id) as ViewResult; // Assert Assert.True(viewResult.ViewData.ModelState.IsValid); }
public void CannotEditMealWithNoTitle() { Mock <IMealRepository> mealMock = new Mock <IMealRepository>(); Mock <IStudentRepository> studentMock = new Mock <IStudentRepository>(); Meal meal = new Meal() { Id = 100, Title = null, Description = " ", Price = 1.50, Date = DateTime.Now.AddDays(-1), MaxGuests = 1 }; mealMock.Setup(m => m.Meals).Returns(new List <Meal>() { meal }); mealMock.Setup(m => m.Create(It.IsAny <Meal>())).Returns((Meal model) => { if (meal.Date > DateTime.Now) { return(true); } return(false); }); mealMock.Setup(m => m.Update(It.IsAny <Meal>())).Returns((Meal model) => { if (meal.Title != null && meal.MaxGuests > 0 && meal.Price >= 0) { return(true); } return(false); }); MealController controller = new MealController(mealMock.Object, studentMock.Object); // Act controller.Create(meal); meal.Title = null; ViewResult viewResult = controller.Edit(meal) as ViewResult; // Assert Assert.Null(viewResult.ViewName); }
public void CannotEditSomeoneElseMeal() { // Arrange Mock <IMealRepository> mealMock = new Mock <IMealRepository>(); Mock <IStudentRepository> studentMock = new Mock <IStudentRepository>(); Student student = new Student() { Id = "101", FirstName = "Ginni", LastName = "Wassell" }; Meal meal = new Meal() { Id = 100, Title = "Compound - Strawberry", Description = " ", Price = 1.50, Date = DateTime.Now.AddDays(6), MaxGuests = 1, }; ClaimsPrincipal identity = new ClaimsPrincipal(new ClaimsIdentity(new Claim[] { new Claim(ClaimTypes.NameIdentifier, student.Id) })); meal.Cook = student; student.CookAtMeals.Add(meal); studentMock.Setup(s => s.Students).Returns(new List <Student>() { student }); mealMock.Setup(m => m.Meals).Returns(new List <Meal>() { meal }); mealMock.Setup(m => m.Update(It.IsAny <Meal>())).Returns((int mealId) => { if (meal.Cook.Id == student.Id) { return(true); } return(false); }); MealController controller = new MealController(mealMock.Object, studentMock.Object) { ControllerContext = new ControllerContext() { HttpContext = new DefaultHttpContext() { User = identity } } }; // Act meal.Cook = new Student() { Id = "abc" }; ViewResult viewResult = controller.Edit(meal.Id) as ViewResult; // Assert Assert.Equal("Error", viewResult?.ViewName); }