コード例 #1
0
        public void ShouldReturnDiscountWhen101ShurikensAndOtherProducts()
        {
            // Arrange
            var basket         = new Basket(new DiscountProvider(), new GiftProvider());
            var shurikensCount = 101;

            for (var i = 0; i < shurikensCount; i++)
            {
                basket.AddBasketItem(new Product(_shurikensId, "Shurikens", _shurikensPrice));
            }
            var otherProductPrice = 100;

            basket.AddBasketItem(new Product("Some-Id", "Some Product", otherProductPrice));

            // Sut
            var discountCalculator = new ShurikensDiscountCalculator();

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

            // Assert
            var expectedDiscount = (_shurikensPrice * shurikensCount + otherProductPrice) * 0.3M;

            Assert.IsTrue(discount == expectedDiscount, "Discount returned should be 30% of total price. Discount: {0} Expected: {1}", discount, expectedDiscount);
        }
コード例 #2
0
        public void ShouldReturn0WhenNoShurikens()
        {
            // Arrange
            var basket = new Basket(new DiscountProvider(), new GiftProvider());

            // Sut
            var discountCalculator = new ShurikensDiscountCalculator();

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

            // Assert
            Assert.IsTrue(discount == 0, "Discount should be 0");
        }
コード例 #3
0
        public void ShouldReturn0WhenShurikensLess100()
        {
            // Arrange
            var basket = new Basket(new DiscountProvider(), new GiftProvider());

            basket.AddBasketItem(new Product(_shurikensId, "Shurikens", _shurikensPrice));

            // Sut
            var discountCalculator = new ShurikensDiscountCalculator();

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

            // Assert
            Assert.IsTrue(discount == 0, "Discount should be 0");
        }