public void IfInStockAndCartItemAmountIsWithinStockRemainingShouldReturnCanBuy()
        {
            ProductVariant variant = new ProductVariantBuilder().Build();
            ProductVariantAvailabilityService service = new ProductVariantAvailabilityServiceBuilder().Build();

            service.CanBuy(variant, 2).Should().BeOfType <CanBuy>();
        }
        public void IfInStockButCannotPurchaseTheRequestedAmountShouldReturnAnUnableToOrderQuantityStatus()
        {
            ProductVariant variant = new ProductVariantBuilder().Build();
            ProductVariantAvailabilityService service = new ProductVariantAvailabilityServiceBuilder().
                                                        CannotOrderQuantity().Build();

            service.CanBuy(variant, 2).Should().BeOfType <CannotOrderQuantity>();
        }
        public void IfCannotShipShouldReturnNoShippingMethodWouldBeAvailable()
        {
            ProductVariant variant = new ProductVariantBuilder().Build();
            ProductVariantAvailabilityService service =
                new ProductVariantAvailabilityServiceBuilder().CannotShip().Build();

            service.CanBuy(variant, 1).Should().BeOfType <NoShippingMethodWouldBeAvailable>();
        }
        public void IfOutOfStockShouldReturnAnOutOfStockStatus()
        {
            ProductVariant productVariant             = new ProductVariantBuilder().Build();
            ProductVariantAvailabilityService service = new ProductVariantAvailabilityServiceBuilder()
                                                        .IsOutOfStock().Build();

            service.CanBuy(productVariant, 1).Should().BeOfType <OutOfStock>();
        }