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