コード例 #1
0
 public ProductVariantAvailabilityServiceBuilder()
 {
     _productStockChecker = A.Fake<IProductStockChecker>();
     A.CallTo(() => _productStockChecker.IsInStock(A<ProductVariant>._)).Returns(true);
     A.CallTo(() => _productStockChecker.CanOrderQuantity(A<ProductVariant>._, A<int>._)).Returns(_canOrderQuantityResult);
     _productShippingChecker = A.Fake<IProductShippingChecker>();
     A.CallTo(() => _productShippingChecker.CanShip(A<ProductVariant>._)).Returns(true);
 }
コード例 #2
0
 public ProductVariantAvailabilityServiceBuilder()
 {
     _productStockChecker = A.Fake <IProductStockChecker>();
     A.CallTo(() => _productStockChecker.IsInStock(A <ProductVariant> ._)).Returns(true);
     A.CallTo(() => _productStockChecker.CanOrderQuantity(A <ProductVariant> ._, A <int> ._)).Returns(_canOrderQuantityResult);
     _productShippingChecker = A.Fake <IProductShippingChecker>();
     A.CallTo(() => _productShippingChecker.CanShip(A <ProductVariant> ._)).Returns(true);
 }
コード例 #3
0
        public CanBuyStatus CanBuy(CartItemData item)
        {
            var productVariant = item.Item;
            var quantity       = item.Quantity;

            if (!_productStockChecker.IsInStock(productVariant))
            {
                return(new OutOfStock(productVariant));
            }
            var canOrderQuantityResult = _productStockChecker.CanOrderQuantity(productVariant, quantity);

            if (!canOrderQuantityResult.CanOrder)
            {
                return(new CannotOrderQuantity(productVariant, canOrderQuantityResult.StockRemaining));
            }
            return(new CanBuy());
        }
コード例 #4
0
        public CanBuyStatus CanBuy(ProductVariant productVariant, int quantity)
        {
            if (!_productStockChecker.IsInStock(productVariant))
            {
                return(new OutOfStock(productVariant));
            }
            var result = _productStockChecker.CanOrderQuantity(productVariant, quantity);

            if (!result.CanOrder)
            {
                return(new CannotOrderQuantity(productVariant, result.StockRemaining));
            }
            if (!_productShippingChecker.CanShip(productVariant))
            {
                return(new NoShippingMethodWouldBeAvailable(productVariant));
            }
            return(new CanBuy());
        }
コード例 #5
0
 public ProductVariantAvailabilityServiceBuilder IsOutOfStock()
 {
     A.CallTo(() => _productStockChecker.IsInStock(A <ProductVariant> ._)).Returns(false);
     return(this);
 }