public void ShouldReturn0WhenNoBagOfPogs()
        {
            // Arrange
            var basket = new Basket(new DiscountProvider(), new GiftProvider());

            // Sut
            var discountCalculator = new BagOfPogsDiscountCalculator();

            // Act
            var discount = discountCalculator.CalculateDiscount(basket);

            // Assert
            Assert.IsTrue(discount == 0);
        }
        public void ShouldReturn0WhenOneBagOfPogs()
        {
            // Arrange
            var basket = new Basket(new DiscountProvider(), new GiftProvider());

            basket.AddBasketItem(new Product(_bagOfPogsId, "Bag of Pogs", 1));

            // Sut
            var discountCalculator = new BagOfPogsDiscountCalculator();

            // Act
            var discount = discountCalculator.CalculateDiscount(basket);

            // Assert
            Assert.IsTrue(discount == 0, "Discount should be 0");
        }
        public void ShouldReturnDiscountWhenTwoBagOfPogs()
        {
            // Arrange
            var bagPrice = 2M;
            var basket   = new Basket(new DiscountProvider(), new GiftProvider());

            basket.AddBasketItem(new Product(_bagOfPogsId, "Bag of Pogs", bagPrice));
            basket.AddBasketItem(new Product(_bagOfPogsId, "Bag of Pogs", bagPrice));

            // Sut
            var discountCalculator = new BagOfPogsDiscountCalculator();

            // Act
            var discount = discountCalculator.CalculateDiscount(basket);

            // Assert
            var expectedDiscount = (bagPrice / 2);

            Assert.IsTrue(discount == expectedDiscount, "Discount returned should be half of price of one bag. Discount: {0} Expected: {1}", discount, expectedDiscount);
        }