public void GiveApplyWhenCartItemQuantityThresholdNotMetThenReturnCorrectly()
        {
            var discount = 28m;
            var cartItem = new CartItem(new Item()
            {
                Sku = "1", UnitPrice = 10.00m
            }, 3);

            var sut = new QuantityForSetPricePromotion(4, discount);

            sut.Apply(cartItem, _calculate);

            cartItem.LineTotal.Should().Be(30.00m);
        }
        public void GiveApplyWhenCalledThenReturnCorrectly(decimal unitPrice, int cartItemQuantity, decimal discount,
                                                           int quantityAppliedAt, decimal expectedTotal)
        {
            var cartItem = new CartItem(new Item()
            {
                Sku = "1", UnitPrice = unitPrice
            }, cartItemQuantity);

            var sut = new QuantityForSetPricePromotion(quantityAppliedAt, discount);

            sut.Apply(cartItem, _calculate);

            cartItem.LineTotal.Should().Be(expectedTotal);
        }
        public void GivenApplyWhenItemIsNullThenReturn()
        {
            var sut = new QuantityForSetPricePromotion(1, 1);

            Assert.Throws <ArgumentNullException>(() => sut.Apply(null, null));
        }