예제 #1
0
        public async Task <Result> ChangeItemQuantityAsync(string userId, int basketItemId, int quantity)
        {
            Basket basket = await _basketRepository.GetByUserIdAsync(userId);

            if (basket == null)
            {
                var message = string.Format(ErrorMessage.UserDoesntHaveBasket, userId);
                _logger.LogInformation(message);
                return(Result.Fail(message));
            }

            BasketItem item = basket.Items.FirstOrDefault(i => i.Id == basketItemId);

            if (item == null)
            {
                var message = string.Format(ErrorMessage.BasketWithItemIdDoesntExists, basketItemId);
                _logger.LogInformation(message);
                return(Result.Fail(message));
            }

            item.ChangeQuantity(quantity);
            await _basketRepository.UpdateAsync(basket);

            return(Result.Ok());
        }
예제 #2
0
        public void ChangeQuantity_WithNegativeQuantity_ShouldThrowContractException()
        {
            // Arrange
            var    basketItem     = new BasketItem(1, 2, Pounds.Of(3));
            Action changeQuantity = () => basketItem.ChangeQuantity(-1);

            // Assert
            Assert.Throws <ContractException>(changeQuantity);
        }
예제 #3
0
        public void ChangeQuantity_WithValidQuantity_ShouldChangeQuantity()
        {
            // Arrange
            var basketItem = new BasketItem(1, 2, Pounds.Of(3));

            // Act
            basketItem.ChangeQuantity(4);

            // Assert
            Assert.Equal(4, basketItem.Quantity);
        }