public async void Delete_WhenIdNotExists_ShouldReturnNotFound()
        {
            var mealService    = new Mock <IMealService>();
            var classUnderTest = new MealController(mealService.Object, _mapper);

            var id = Guid.NewGuid();

            mealService.Setup(a => a.DeleteByIdAsync(It.Is <Guid>(g => g == id)))
            .ReturnsAsync(0);

            var result = await classUnderTest.Delete(id);

            Assert.IsType <NotFoundResult>(result);
            mealService.VerifyAll();
        }
示例#2
0
        public void DeleteTest()
        {
            //always fails because There is a workout that depends on this Mealtype


            // Arrange
            MealController controller = new MealController();

            // Act
            List <Meal> loadAll = controller.Get() as List <Meal>;

            //grab first result
            Meal m = loadAll[0];

            int results = controller.Delete(m);

            Assert.IsTrue(results > 0);
        }
        public void CannotDeleteSomeoneElseMeal()
        {
            // 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.Delete(It.IsAny <int>())).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.Delete(new MealButtonViewModel()
            {
                MealId = 100
            }) as ViewResult;

            // Assert
            Assert.Equal("Error", viewResult?.ViewName);
        }
        public void CannotDeleteMealWithGuests()
        {
            // Arrange
            Mock <IMealRepository>    mealMock    = new Mock <IMealRepository>();
            Mock <IStudentRepository> studentMock = new Mock <IStudentRepository>();

            Student student = new Student()
            {
                FirstName = "Ginni",
                LastName  = "Wassell"
            };

            Meal meal = new Meal()
            {
                Id          = 100,
                Cook        = student,
                Title       = "Compound - Strawberry",
                Description = " ",
                Price       = 1.50,
                Date        = DateTime.Now.AddDays(6),
                MaxGuests   = 1,
            };

            student.CookAtMeals.Add(meal);

            mealMock.Setup(m => m.Meals).Returns(new List <Meal>()
            {
                meal
            });

            mealMock.Setup(m => m.Join(It.IsAny <int>(), It.IsAny <string>())).Returns((int mealId, string user) =>
            {
                if (meal.Guests.Count < meal.MaxGuests)
                {
                    meal.Guests.Add(new Guest());
                    return(true);
                }

                return(false);
            });

            mealMock.Setup(m => m.Delete(It.IsAny <int>())).Returns((int mealId) =>
            {
                if (meal.Guests.Count == 0)
                {
                    return(true);
                }

                return(false);
            });

            MealController controller = new MealController(mealMock.Object, studentMock.Object);

            // Act
            RedirectResult redirectResult = controller.Delete(new MealButtonViewModel()
            {
                MealId = 100
            }) as RedirectResult;

            controller.Join(new MealButtonViewModel()
            {
                MealId = 100
            });
            ViewResult viewResult = controller.Delete(new MealButtonViewModel()
            {
                MealId = 100
            }) as ViewResult;

            // Assert
            Assert.Equal("Error", viewResult?.ViewName);
        }