public void ShouldAddProductToCart()
        {
            var mockDB = new Mock <ICart>();

            mockDB.Setup(c => c.ToCart(GetProduct(), GetCart(), 1))
            .Returns(true);

            var mockProductService = new Mock <IProductService>();

            mockProductService.Setup(p => p.FindById(new ProductFindRequest
            {
                ProductId = 2
            })).Returns(new ProductFindResponse
            {
                FoundProduct = GetProduct()
            });

            mockDB.Setup(c => c.ReadById(GetCartById()))
            .Returns(GetCart());

            _cartValidation = new CartValidation(_addProductToCartValidation, _cartCreateRequestValidation, _cartFindRequestValidation, _cartRemoveRequestValidation, _removeFromCartRequestValidation, _cartClearRequestValidation);

            _victim = new CartService(mockDB.Object, mockProductService.Object, _cartValidation);

            var actual = _victim.AddToCart(AddItemToCart()).HasAdded;

            Assert.True(actual);
        }
        public void ShouldReturnErrorCodes(long cartId, long userId, CartValidationErrors expectedError)
        {
            AddProductToCartValidation      AddProductToCartValidation      = new AddProductToCartValidation();
            CartCreateRequestValidation     CartCreateRequestValidation     = new CartCreateRequestValidation();
            CartFindRequestValidation       CartFindRequestValidation       = new CartFindRequestValidation();
            CartRemoveRequestValidation     CartRemoveRequestValidation     = new CartRemoveRequestValidation();
            RemoveFromCartRequestValidation RemoveFromCartRequestValidation = new RemoveFromCartRequestValidation();
            CartClearRequestValidation      CartClearRequestValidation      = new CartClearRequestValidation();

            CartValidation _validation = new CartValidation(AddProductToCartValidation, CartCreateRequestValidation,
                                                            CartFindRequestValidation, CartRemoveRequestValidation, RemoveFromCartRequestValidation, CartClearRequestValidation);

            var request = new CartCreateRequest
            {
                UserId = userId,
                CartId = cartId
            };

            var listErrors = _validation.CartCreateRequestValidation.Validate(request);

            foreach (var error in listErrors)
            {
                Assert.Equal(expectedError, error);
            }
        }
        public void ShouldFindCartById()
        {
            var mockDB = new Mock <ICart>();

            mockDB.Setup(c => c.ReadById(GetCartById()))
            .Returns(GetCart());

            _cartValidation = new CartValidation(_addProductToCartValidation, _cartCreateRequestValidation, _cartFindRequestValidation, _cartRemoveRequestValidation, _removeFromCartRequestValidation, _cartClearRequestValidation);

            _victim = new CartService(mockDB.Object, _productService, _cartValidation);

            var actual = _victim.FindCartById(GetCartById()).Cart;

            Assert.Equal(GetCartById().CartId, actual.Id);
        }
        public void ShouldClearCart()
        {
            var mockDB = new Mock <ICart>();

            mockDB.Setup(c => c.Clear(GetCart().Id))
            .Returns(true);

            var mockProductService = new Mock <IProductService>();

            _cartValidation = new CartValidation(_addProductToCartValidation, _cartCreateRequestValidation, _cartFindRequestValidation, _cartRemoveRequestValidation, _removeFromCartRequestValidation, _cartClearRequestValidation);

            _victim = new CartService(mockDB.Object, mockProductService.Object, _cartValidation);

            var actual = _victim.ClearCart(ClearCartRequest()).HasClear;

            Assert.True(actual);
        }
 public CartService(ICart cartRepository, IProductService productService, CartValidation cartValidation)
 {
     _cartRepository = cartRepository;
     _productService = productService;
     _cartValidation = cartValidation;
 }