public void ReturnCorrectData_WhenInvoked() { // Arrange Mapper.Reset(); AutomapperConfiguration.Initialize(); var mockContext = new Mock <IOnlineStoreContext>(); var stubDateTimeProvider = new MockDateTimeProvider(); var orders = new List <Order> { new Order { Comment = "Patka", CourierId = 1, OrderedOn = stubDateTimeProvider.Now, UserId = 1, User = new User() { Username = "******" } } }; var mockSet = new Mock <DbSet <Order> >(); mockSet.SetupData(orders); mockContext.Setup(s => s.Orders).Returns(mockSet.Object); var service = new Logic.Services.OrderService(mockContext.Object); // Act var ordersGot = service.GetAllOrders(); //Assert Assert.AreEqual(orders.Count, ordersGot.Count()); }
public void ThrowArgumentException_WhenOrderModelIsNull() { //Arrange var fakeContext = new Mock <IOnlineStoreContext>(); var orderModel = new Logic.Services.OrderService(fakeContext.Object); //Act & Assert Assert.ThrowsException <ArgumentNullException>(() => orderModel.MakeOrder(null)); }
public void InvokeAddMethodOnOrders_WhenCourierFoundAndUsernameExists() { // Arrange var mockContext = new Mock <IOnlineStoreContext>(); var usersMock = new List <User> { new User { Username = "******" } }.GetQueryableMockDbSet(); var couriersMock = new List <Courier> { new Courier { FirstName = "Peshko", LastName = "Peshkov" } }.GetQueryableMockDbSet(); var ordersMock = new List <Order> { new Order() }.GetQueryableMockDbSet(); var productsMock = new List <Product> { new Product { Name = "Testproduct", Quantity = 5 } }.GetQueryableMockDbSet(); var orderProductsMock = new List <OrderProduct> { new OrderProduct() }.GetQueryableMockDbSet(); IDictionary <string, int> productsCounts = new Dictionary <string, int>(); productsCounts.Add("Testproduct", 2); var mockDateTimeProvider = new MockDateTimeProvider(); mockContext.Setup(x => x.Users).Returns(usersMock.Object); mockContext.Setup(x => x.Couriers).Returns(couriersMock.Object); mockContext.Setup(s => s.Orders).Returns(ordersMock.Object); mockContext.Setup(s => s.Products).Returns(productsMock.Object); mockContext.Setup(s => s.OrderProducts).Returns(orderProductsMock.Object); var service = new Logic.Services.OrderService(mockContext.Object); var orderToMake = new OrderMakeModel { Username = "******", OrderedOn = mockDateTimeProvider.Now, Comment = "Tralala", ProductNameAndCounts = productsCounts }; // Act service.MakeOrder(orderToMake); //Assert ordersMock.Verify(v => v.Add(It.IsNotNull <Order>()), Times.Once); }
public void ReduceTheAvailableProductQuantity_WhenOrderIsFinished() { // Arrange var mockContext = new Mock <IOnlineStoreContext>(); var usersMock = new List <User> { new User { Username = "******" } }.GetQueryableMockDbSet(); var couriersMock = new List <Courier> { new Courier { FirstName = "Peshko", LastName = "Peshkov" } }.GetQueryableMockDbSet(); var ordersMock = new List <Order> { new Order() }.GetQueryableMockDbSet(); var productsMock = new List <Product> { new Product { Name = "Testproduct", Quantity = 5 } }.GetQueryableMockDbSet(); var orderProductsMock = new List <OrderProduct> { new OrderProduct() }.GetQueryableMockDbSet(); IDictionary <string, int> productsCounts = new Dictionary <string, int>(); productsCounts.Add("Testproduct", 2); var mockDateTimeProvider = new MockDateTimeProvider(); mockContext.Setup(x => x.Users).Returns(usersMock.Object); mockContext.Setup(x => x.Couriers).Returns(couriersMock.Object); mockContext.Setup(s => s.Orders).Returns(ordersMock.Object); mockContext.Setup(s => s.Products).Returns(productsMock.Object); mockContext.Setup(s => s.OrderProducts).Returns(orderProductsMock.Object); var service = new Logic.Services.OrderService(mockContext.Object); var orderToMake = new OrderMakeModel { Username = "******", OrderedOn = mockDateTimeProvider.Now, Comment = "Tralala", ProductNameAndCounts = productsCounts }; // Act service.MakeOrder(orderToMake); //Assert Assert.AreEqual(3, mockContext.Object.Products.FirstOrDefault(f => f.Name == "Testproduct").Quantity); }
public void ThrowArgumentException_WhenQuantityIsNotEnough() { // Arrange var mockContext = new Mock <IOnlineStoreContext>(); var usersMock = new List <User> { new User { Username = "******" } }.GetQueryableMockDbSet(); var couriersMock = new List <Courier> { new Courier { FirstName = "Peshko", LastName = "Peshkov" } }.GetQueryableMockDbSet(); var ordersMock = new List <Order> { new Order() }.GetQueryableMockDbSet(); var productsMock = new List <Product> { new Product { Name = "Testproduct", Quantity = 5 } }.GetQueryableMockDbSet(); var orderProductsMock = new List <OrderProduct> { new OrderProduct() }.GetQueryableMockDbSet(); IDictionary <string, int> productsCounts = new Dictionary <string, int>(); productsCounts.Add("Testproduct", 7); var mockDateTimeProvider = new MockDateTimeProvider(); mockContext.Setup(x => x.Users).Returns(usersMock.Object); mockContext.Setup(x => x.Couriers).Returns(couriersMock.Object); mockContext.Setup(s => s.Orders).Returns(ordersMock.Object); mockContext.Setup(s => s.Products).Returns(productsMock.Object); mockContext.Setup(s => s.OrderProducts).Returns(orderProductsMock.Object); var service = new Logic.Services.OrderService(mockContext.Object); var orderToMake = new OrderMakeModel { Username = "******", OrderedOn = mockDateTimeProvider.Now, Comment = "Tralala", ProductNameAndCounts = productsCounts }; //Act && Assert Assert.ThrowsException <ArgumentException>(() => service.MakeOrder(orderToMake)); }
public void ThrowArgumentException_WhenUserNotFound() { // Arrange var mockContext = new Mock <IOnlineStoreContext>(); var usersMock = new List <User>().GetQueryableMockDbSet(); mockContext.Setup(x => x.Users).Returns(usersMock.Object); var service = new Logic.Services.OrderService(mockContext.Object); var orderToMake = new OrderMakeModel { Username = "******" }; // Act & Assert Assert.ThrowsException <ArgumentException>(() => service.MakeOrder(orderToMake)); }
public void ReturnInstanceOfTypeIEnumerableIOrderProduct_WhenInvoked() { // Arrange Mapper.Reset(); AutomapperConfiguration.Initialize(); var mockContext = new Mock <IOnlineStoreContext>(); var usersMock = new List <User> { new User { Username = "******" } }.GetQueryableMockDbSet(); var couriersMock = new List <Courier> { new Courier { FirstName = "Peshko", LastName = "Peshkov" } }.GetQueryableMockDbSet(); var ordersMock = new List <Order> { new Order() }.GetQueryableMockDbSet(); var productsMock = new List <Product> { new Product { Name = "Testproduct", Quantity = 5 } }.GetQueryableMockDbSet(); var orderProductsMock = new List <OrderProduct> { new OrderProduct() }.GetQueryableMockDbSet(); IDictionary <string, int> productsCounts = new Dictionary <string, int>(); productsCounts.Add("Testproduct", 2); mockContext.Setup(x => x.Users).Returns(usersMock.Object); mockContext.Setup(x => x.Couriers).Returns(couriersMock.Object); mockContext.Setup(s => s.Orders).Returns(ordersMock.Object); mockContext.Setup(s => s.Products).Returns(productsMock.Object); mockContext.Setup(s => s.OrderProducts).Returns(orderProductsMock.Object); var service = new Logic.Services.OrderService(mockContext.Object); // Act var orders = service.GetAllOrders(); //Assert Assert.IsInstanceOfType(orders, typeof(IEnumerable <IOrderModel>)); }