public void PlaceOrderReturnsOrder() { var orderRepository = new Mock <IOrderRepository>(MockBehavior.Strict); var orderItemRepository = new Mock <IOrderItemRepository>(MockBehavior.Strict); var cartRepository = new Mock <IShoppingCartRepository>(MockBehavior.Strict); var cartItemRepository = new Mock <IShoppingCartItemRepository>(MockBehavior.Strict); var orderService = new ca_service.Services.OrderService(orderRepository.Object, orderItemRepository.Object, cartRepository.Object, cartItemRepository.Object); int shoppingCartId = 33, userId = 99, productId = 42; OrderPaymentMethod paymentMethod = OrderPaymentMethod.CaliforniaDepartmentofEducation; ShoppingCart theCart = new ShoppingCart(shoppingCartId) { Items = new List <ShoppingCartItem>(), UserId = userId }; cartRepository.Setup(x => x.Get(shoppingCartId)).Returns(() => theCart); ShoppingCartItem theItem = new ShoppingCartItem() { ShoppingCartId = shoppingCartId, ProductId = productId, Quantity = 1, Price = 25.00m, }; List <ShoppingCartItem> cartItems = new List <ShoppingCartItem>() { theItem }; cartItemRepository.Setup(x => x.Fetch(shoppingCartId)).Returns(() => cartItems); orderRepository.Setup(x => x.Add(It.IsAny <Order>())); orderItemRepository.Setup(x => x.Add(It.IsAny <OrderItem>())); cartItemRepository.Setup(x => x.Delete(It.IsAny <int>())); string address1 = "", address2 = "", address3 = "", city = "", state = "", zip = "", email = ""; var result = orderService.Create(shoppingCartId, userId, paymentMethod, address1, address2, address3, city, state, zip, email); Assert.NotNull(result); Assert.Equal(paymentMethod, result.PaymentMethod); Assert.Equal(1, result.Items.Count); Assert.Equal(productId, result.Items.First().ProductId); orderRepository.VerifyAll(); orderItemRepository.VerifyAll(); cartRepository.VerifyAll(); cartItemRepository.VerifyAll(); }
public void PlaceOrderThrowsExceptionIfShoppingCartForOtherUser() { Mock <IOrderRepository> orderRepository = new Mock <IOrderRepository>(MockBehavior.Strict); Mock <IOrderItemRepository> orderItemRepository = new Mock <IOrderItemRepository>(MockBehavior.Strict); Mock <IShoppingCartRepository> cartRepository = new Mock <IShoppingCartRepository>(MockBehavior.Strict); Mock <IShoppingCartItemRepository> cartItemRepository = new Mock <IShoppingCartItemRepository>(MockBehavior.Strict); var orderService = new ca_service.Services.OrderService(orderRepository.Object, orderItemRepository.Object, cartRepository.Object, cartItemRepository.Object); int shoppingCartId = 33, userId = 99, productId = 42, otherUserId = 102; OrderPaymentMethod paymentMethod = OrderPaymentMethod.CaliforniaDepartmentofEducation; ShoppingCart theCart = new ShoppingCart(shoppingCartId) { Items = new List <ShoppingCartItem>(), UserId = userId }; cartRepository.Setup(x => x.Get(shoppingCartId)).Returns(() => theCart); ShoppingCartItem theItem = new ShoppingCartItem() { ShoppingCartId = shoppingCartId, ProductId = productId, Quantity = 1, Price = 25.00m, }; string address1 = "", address2 = "", address3 = "", city = "", state = "", zip = "", email = ""; Assert.Throws <Exception>(() => orderService.Create(shoppingCartId, otherUserId, paymentMethod, address1, address2, address3, city, state, zip, email)); orderRepository.VerifyAll(); orderItemRepository.VerifyAll(); cartRepository.VerifyAll(); cartItemRepository.VerifyAll(); }
public Order Create(int shoppingCartId, int userId, OrderPaymentMethod paymentMethod, string address1, string address2, string address3, string city, string state, string postalCode, string emailAddress) { var cart = _shoppingCartRepository.Get(shoppingCartId); if (cart == null) { throw new Exception("Shopping cart not found."); } if (userId != cart.UserId) { throw new Exception("Shopping cart not found."); } var cartItems = _shoppingCartItemRepository.Fetch(shoppingCartId); if (cartItems == null || !cartItems.Any()) { throw new Exception("No items found in shopping cart."); } Order newOrder = new Order() { Items = new List <OrderItem>(), CreateDate = DateTime.UtcNow, PaymentMethod = paymentMethod, Status = OrderStatus.Placed, UserId = cart.UserId, Address1 = address1, Address2 = address2, Address3 = address3, City = city, State = state, PostalCode = postalCode, EmailAddress = emailAddress }; foreach (var item in cartItems) { OrderItem orderItem = new OrderItem() { ProductId = item.ProductId, Quantity = item.Quantity, Price = item.Price }; newOrder.Items.Add(orderItem); } _orderRepository.Add(newOrder); foreach (var orderItem in newOrder.Items) { orderItem.OrderId = newOrder.Id; _orderItemRepository.Add(orderItem); } foreach (var cartItem in cartItems) { _shoppingCartItemRepository.Delete(cartItem.Id); } return(newOrder); }