Exemple #1
0
        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>();
        }
Exemple #2
0
        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}'."));
        }