Beispiel #1
0
 public void IfItemHasQuantity0_ThenReturnInvalidMessage()
 {
     var order = new Order() ;
     order.AddItem(new OrderItem { Quantity = 0 });
     order.GetErrorMessages()
         .Should().Contain("Item 0: Quantity should be greater than 0.");
 }
        private Response InvalidOrderResponse(Order order)
        {
            if (errorResponse != null)
            return errorResponse;

              var content = string.Join("\n", order.GetErrorMessages());
              return Response.BadRequest("Invalid entities values", content);
        }
Beispiel #3
0
        public void IfTheProductDoesNotAllowCustomization_ThenReturnInvalidMessage()
        {
            var product = new Product
                              {
                                  Name = "latte",
                                  Customizations = {new Customization{Name = "size", PossibleValues = {"medium","large"}}}
                              };

            var order = new Order();
            order.AddItem(new OrderItem
                            {
                                Quantity = 1,
                                Product = product,
                                Preferences = { { "milk", "lot" } }
                            });
            order.GetErrorMessages()
                .Should().Contain("Item 0: The product latte does not have a customization: milk/lot.");
        }
Beispiel #4
0
 public void IfTheOrderDoesNotHaveItems_ThenReturnInvalidMessage()
 {
     var order = new Order();
     order.GetErrorMessages()
         .Should().Contain("The order must include at least one item.");
 }
        /// <summary>
        /// Creates an order
        /// </summary>
        /// <param name="a_orderModel">Order dto model</param>
        /// <remarks>
        /// Json Invoke: {Location: "inShop", Items: {Name: "latte", Quantity: 5}}
        /// Xml invoke: 
        /// </remarks>
        /// <returns>Response</returns>
        public HttpResponseMessage Post(OrderDto a_orderModel)
        {
            var order = new Order
             {
            Date = DateTime.Today,
            Location = a_orderModel.Location
             };

             foreach (var requestedItem in a_orderModel.Items)
             {
            var product = m_productRepository.GetByName(requestedItem.Name);
            if (product == null)
            {
               return Request.CreateResponse(HttpStatusCode.BadRequest, string.Format("We don't offer {0}", requestedItem.Name));
            }

            var orderItem = new OrderItem(product,
                                        requestedItem.Quantity,
                                        product.Price,
                                        requestedItem.Preferences.ToDictionary(a_x => a_x.Key, a_y => a_y.Value));
            order.AddItem(orderItem);
             }

             if (!order.IsValid())
             {
            var content = string.Join("\n", order.GetErrorMessages());
            return Request.CreateResponse(HttpStatusCode.BadRequest, string.Format("Invalid entities values {0}", content));
             }

             m_orderRepository.MakePersistent(order);
             //var uri = resourceLinker.GetUri<OrderResourceHandler>(orderResource => orderResource.Get(0, null), new { orderId = order.Id });
             return Request.CreateResponse(HttpStatusCode.OK);
        }