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); }
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); }
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()); }
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()); }