public BasketSaveResponse Save(string userId, OrderStatus orderStatus) { var response = new BasketSaveResponse(); if (!_userSessionService.IsLoggedIn(userId)) { response.AddError(new Error { Code = ErrorCodes.UserNotLoggedIn, UserMessage = "You have to be logged in to save your order" }); return(response); } if (orderStatus == OrderStatus.Unknown) { response.AddError(new Error { UserMessage = "Order status not specified." }); return(response); } var userBasket = _userSessionService.GetBasketForUser(userId); var orderRequest = new SaveOrderRequest { DeliveryType = DeliveryType.Unknown.ToString(), Voucher = "", UserId = _userSessionService.GetUserByUserToken(userId), GrandTotal = userBasket.Total.InPence, Status = orderStatus.ToString(), Orders = userBasket.Items.ConvertAll(x => new Order { PizzaId = x.Pizza.Id, SizeId = x.Size.Id, ExtraToppingIds = x.ExtraToppings.ConvertAll(y => y.Id), SubTotal = x.Total.InPence }) }; var saveOrderResponse = _orderRepository.SaveOrder(orderRequest); if (saveOrderResponse.HasError) { response.AddError(saveOrderResponse.Error); } return(response); }
public void SetUp() { _orderRepository = new Mock <IOrderRepository>(); _orderRepository.Setup(x => x.SaveOrder(It.IsAny <SaveOrderRequest>())).Returns(() => new SaveOrderResponse()); _userSessionService = new Mock <IUserSessionService>(); _userSessionService.Setup(x => x.IsLoggedIn(It.IsAny <string>())).Returns(() => true); _userSessionService.Setup(x => x.GetBasketForUser(It.IsAny <string>())).Returns(() => new Data.Services.UserSession.Basket { Items = new List <BasketItem> { new BasketItem { Pizza = new PizzaRecord { Id = 2 }, Size = new SizeRecord { Id = 3 }, ExtraToppings = new List <ToppingRecord> { new ToppingRecord { Id = 4 } }, Total = Money.From(1200) } }, Total = Money.From(1200) }); _userSessionService.Setup(x => x.GetUserByUserToken(It.IsAny <string>())).Returns(() => 1); _voucherService = new Mock <IVoucherService>(); _voucherService.Setup(x => x.Verify(It.IsAny <Data.Services.UserSession.Basket>(), It.IsAny <List <DeliveryType> >(), It.IsAny <string>())).Returns(() => new VerifyVoucherResponse { Total = Money.From(1100) }); var subject = new BasketService(_orderRepository.Object, _userSessionService.Object, _voucherService.Object); _result = subject.Save("USER_TOKEN", OrderStatus.Partial); }