public void ApplyDiscount_WhenThereIsNoMilkInBasket_TotalRemainsUnchanged()
        {
            // Arrange
            var initTotal = 100;
            var product   = fixture.Create <Product>();
            var basket    = new Basket();

            basket.AddItem(product, 10);

            var subject = new FourMilkOffer();

            // Act
            var result = subject.ApplyDiscount(basket, initTotal);

            // Assert
            Assert.AreEqual(initTotal, result);
        }
        public void ApplyDiscount_WhenThereIsXAmountOfMilkInBasket_TotalIsCalculatedCorrectly(int qtyMilk, double priceMilk, double initTotal, double expected)
        {
            // Arrange
            var milk = fixture.Build <Product>()
                       .With(p => p.Name, "Milk")
                       .With(p => p.Price, priceMilk)
                       .Create();
            var basket = new Basket();

            basket.AddItem(milk, qtyMilk);

            var subject = new FourMilkOffer();

            // Act
            var result = Math.Round(subject.ApplyDiscount(basket, initTotal), 2);

            // Assert
            Assert.AreEqual(expected, result);
        }