public ActionResult UpdateBasket(BasketUpdateBasket model) { foreach (var updateOrderline in model.RefreshBasket) { var newQuantity = updateOrderline.OrderLineQty; if (newQuantity <= 0) { newQuantity = 0; } _transactionLibrary.UpdateLineItemByOrderLineId(updateOrderline.OrderLineId, newQuantity); } _transactionLibrary.ExecuteBasketPipeline(); var basket = _transactionLibrary.GetBasket(); BasketUpdateBasketViewModel updatedBasket = new BasketUpdateBasketViewModel(); foreach (var orderLine in basket.OrderLines) { var orderLineViewModel = new BasketUpdateOrderline(); orderLineViewModel.OrderlineId = orderLine.OrderLineId; orderLineViewModel.Quantity = orderLine.Quantity; orderLineViewModel.Total = new Money(orderLine.Total.GetValueOrDefault(), basket.BillingCurrency.ISOCode).ToString(); orderLineViewModel.Discount = orderLine.Discount; orderLineViewModel.Tax = new Money(orderLine.VAT, basket.BillingCurrency.ISOCode).ToString(); orderLineViewModel.Price = new Money(orderLine.Price, basket.BillingCurrency.ISOCode).ToString(); orderLineViewModel.PriceWithDiscount = new Money(orderLine.Price - orderLine.Discount, basket.BillingCurrency.ISOCode).ToString(); updatedBasket.Orderlines.Add(orderLineViewModel); } string orderTotal = new Money(basket.OrderTotal.GetValueOrDefault(), basket.BillingCurrency.ISOCode).ToString(); string discountTotal = new Money(basket.DiscountTotal.GetValueOrDefault(), basket.BillingCurrency.ISOCode).ToString(); string taxTotal = new Money(basket.TaxTotal.GetValueOrDefault(), basket.BillingCurrency.ISOCode).ToString(); string subTotal = new Money(basket.SubTotal.GetValueOrDefault(), basket.BillingCurrency.ISOCode).ToString(); updatedBasket.OrderTotal = orderTotal; updatedBasket.DiscountTotal = discountTotal; updatedBasket.TaxTotal = taxTotal; updatedBasket.SubTotal = subTotal; return(Json(new { MiniBasketRefresh = _miniBasketService.Refresh(), OrderTotal = orderTotal, DiscountTotal = discountTotal, TaxTotal = taxTotal, SubTotal = subTotal, OrderLines = updatedBasket.Orderlines })); }
public void UpdateOrderline_Removes_Orderline_If_Quantity_Is_Negative_Or_Zero_And_Json_Result_IsNotNull() { //Arrange _transactionLibraryInternal.GetBasket(false).Returns(new Basket(new PurchaseOrder { BillingCurrency = new Currency { ISOCode = "USD" } })); BasketUpdateBasket model = new BasketUpdateBasket(); model.RefreshBasket = new List <BasketUpdateBasket.UpdateOrderLine>(); model.RefreshBasket.Add(new BasketUpdateBasket.UpdateOrderLine() { OrderLineId = 0, OrderLineQty = 2 }); model.RefreshBasket.Add(new BasketUpdateBasket.UpdateOrderLine() { OrderLineId = 1, OrderLineQty = 1 }); model.RefreshBasket.Add(new BasketUpdateBasket.UpdateOrderLine() { OrderLineId = 2, OrderLineQty = -5 }); //Act var result = _controller.UpdateBasket(model); // Assert _transactionLibraryInternal.Received().UpdateLineItemByOrderLineId(0, 2); _transactionLibraryInternal.Received().UpdateLineItemByOrderLineId(1, 1); _transactionLibraryInternal.Received().UpdateLineItemByOrderLineId(2, 0); _transactionLibraryInternal.Received().ExecuteBasketPipeline(); var jsonResult = result as JsonResult; Assert.NotNull(jsonResult); }