コード例 #1
0
        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();
        }
コード例 #2
0
        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();
        }
コード例 #3
0
        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);
        }