Exemplo n.º 1
0
        public async Task AddProductToShoppingCartAsync_ValidProduct_AddedProduct()
        {
            var userId         = 1;
            var shoppingCartId = 2;
            var productId      = 3;

            var request = new AddProductToShoppingCart
            {
                ProductId      = productId,
                Quantity       = 5,
                ShoppingCartId = shoppingCartId,
            };

            var cartEntity = new ShoppingCart
            {
                Id       = shoppingCartId,
                IsActive = true,
                UserId   = userId
            };

            var productEntity = new Product
            {
                Id          = productId,
                Description = "Test_Description",
                Name        = "Test_Name",
                Price       = 2.56,
                Quantity    = 100
            };

            var callToGetShoppingCart = A.CallTo(() => _cartRepository.GetShoppingCartAsync(shoppingCartId));

            callToGetShoppingCart.Returns(cartEntity);

            var callToGetProduct = A.CallTo(() => _productRepository.GetProductAsync(productId));

            callToGetProduct.Returns(productEntity);

            var callToAddProduct = A.CallTo(() => _cartRepository.AddShoppingCartProductAsync(cartEntity, productEntity, request.Quantity));

            await _cartService.AddProductToShoppingCartAsync(request, userId);

            callToGetShoppingCart.MustHaveHappenedOnceExactly();
            callToGetProduct.MustHaveHappenedOnceExactly();
            callToAddProduct.MustHaveHappenedOnceExactly();
        }