public void RepositoryPropertyCalledTwice() { //Arrange var mock = new Mock <IFoodItemRepository>(); var dbmock = new Mock <IMyKitchenDataContext>(); var usermock = new Mock <UserInfo>(); mock.Setup(x => x.GetFoodItems()).Returns(new[] { new FoodItem { FoodItemName = "test 1" } }.AsQueryable); var mockLogger = new Mock <Microsoft.Extensions.Logging.ILogger <FoodItemsController> >(); var controller = new FoodItemsController(mock.Object, dbmock.Object, mockLogger.Object, usermock.Object); //Act var result = controller.Index(); //Assert mock.Verify(x => x.GetFoodItems(), Times.AtMost(2)); }
public void Can_Paginate() { //TODO figure out how to moq the user //https://justintimecoder.com/useful-skills-with-moq/ //unit tests are not supposed to rely on DB //arrange //arrange var testPageSize = 2; var testPageIndex = 3; var userMock = new Mock <UserInfo>(); var applicationUserMock = new Mock <ApplicationUser>(); var mock = new Mock <IFoodItemRepository>(); var dbmock = new Mock <IMyKitchenDataContext>(); mock.Setup(x => x.GetFoodItems()).Returns(new[] { new FoodItem() { FoodDescription = "FI1" }, new FoodItem() { FoodDescription = "FI2" }, new FoodItem() { FoodDescription = "FI3" }, new FoodItem() { FoodDescription = "FI4" }, //These should appear on Page 3 new FoodItem() { FoodDescription = "FI5" }, new FoodItem() { FoodDescription = "FI6" }, }.AsQueryable); mock.Setup(x => x.GetFoodItemsForUser(userMock.Object.User)).Returns(new[] { new FoodItem() { FoodDescription = "FI1" }, new FoodItem() { FoodDescription = "FI2" }, new FoodItem() { FoodDescription = "FI3" }, new FoodItem() { FoodDescription = "FI4" }, //These should appear on Page 3 new FoodItem() { FoodDescription = "FI5" }, new FoodItem() { FoodDescription = "FI6" }, }.AsQueryable); // mock.SetupGet(x => x.GetFoodItemsForUser).Returns // userMock.SetupGet(x => x.UserV var mockLogger = new Mock <Microsoft.Extensions.Logging.ILogger <FoodItemsController> >(); var controller = new FoodItemsController(mock.Object, dbmock.Object, mockLogger.Object, userMock.Object) { PageSize = testPageSize }; //act var result = (controller.Index(testPageIndex) as ViewResult)?.ViewData.Model as FoodItemIndexViewModel; //assert FoodItem[] foodItemArray = result.FoodItems.ToArray(); Assert.True(foodItemArray.Length == 2); Assert.Equal("FI5", foodItemArray[0].FoodDescription); Assert.Equal("FI6", foodItemArray[1].FoodDescription); }