public void Pay_UserCreditBalanceLessThanTotalCartPrice_BadRequestObjectResult() { // Arrange var userId = "userId"; var shoppingCartId = Guid.NewGuid(); var sut = new StoreController(_storeItemRepository, _warehouseService, _shoppingCardRepository, _userCreditService, _paymentService); var shoppingCart = new ShoppingCart(userId); shoppingCart.AddOrder(new Order(Guid.NewGuid(), 10, 1)); shoppingCart.AddOrder(new Order(Guid.NewGuid(), 20, 2)); shoppingCart.AddOrder(new Order(Guid.NewGuid(), 30, 3)); A.CallTo(() => _shoppingCardRepository.GetShoppingCartForUser(A <string> .Ignored)) .Returns(shoppingCart); A.CallTo(() => _userCreditService.GetUserCurrentBalance(A <string> .Ignored)) .Returns(0); // Act var result = sut.Pay(userId, shoppingCartId); // Assert result.Should() .BeOfType <BadRequestObjectResult>(); }
public IActionResult Pay(string userId, Guid shoppingCartId) { var shoppingCart = _shoppingCardRepository.GetShoppingCartForUser(userId); var currentBalance = _userCreditService.GetUserCurrentBalance(userId); if (shoppingCart.GetTotalPrice() > currentBalance) { return(BadRequest("Not enough credits.")); } var transactionId = _paymentService.Pay(userId, shoppingCartId); return(Ok($"Payment was successful! Your transaction id is '{transactionId}'.")); }