コード例 #1
0
        public void ByWeightLineItemWithBulkDiscountHasCorrectPriceTest()
        {
            // Arrange
            const int    id            = 1;
            const double weightInKilos = 2.00;
            // pricePerKilo = 5.00m
            ILineItem     byWeightLineItem = new ByWeightLineItem(id, weightInKilos);
            const decimal expectedPrice1   = 9.00m;
            const decimal expectedPrice2   = 10.00m;

            // Lineitem is above bulk discount threshold of $20.00, therefore has 10% discount
            BulkDiscountLineItem bulkDiscountLineItem1 = new BulkDiscountLineItem(byWeightLineItem)
            {
                DiscountThreshold  = 10.00m,
                DiscountPercentage = 10
            };

            // Lineitem is below bulk discount threshold of $40.00, therefore has no discount
            BulkDiscountLineItem bulkDiscountLineItem2 = new BulkDiscountLineItem(byWeightLineItem)
            {
                DiscountThreshold  = 20.00m,
                DiscountPercentage = 10
            };

            // Act
            decimal actualPrice1 = bulkDiscountLineItem1.GetPrice();
            decimal actualPrice2 = bulkDiscountLineItem2.GetPrice();

            // Assert
            Assert.Multiple(() =>
            {
                Assert.That(actualPrice1, Is.EqualTo(expectedPrice1));
                Assert.That(actualPrice2, Is.EqualTo(expectedPrice2));
            });
        }
コード例 #2
0
        public void ByWeightLineItemWithCouponDiscountHasCorrectPriceTest()
        {
            // Arrange
            // pricePerKilo = 5.00m
            ILineItem     byWeightLineItem1 = new ByWeightLineItem(1, 2.00);
            ILineItem     byWeightLineItem2 = new ByWeightLineItem(1, 8.00);
            const decimal expectedPrice1    = 10.00m;
            const decimal expectedPrice2    = 25.00m;

            // Does not qualify for discount since price < discount
            CouponDiscountLineItem couponDiscountLineItem1 = new CouponDiscountLineItem(byWeightLineItem1)
            {
                CouponDiscount = 15.00m
            };

            // Qualifies for discount since price > discount
            CouponDiscountLineItem couponDiscountLineItem2 = new CouponDiscountLineItem(byWeightLineItem2)
            {
                CouponDiscount = 15.00m
            };

            // Act
            decimal actualPrice1 = couponDiscountLineItem1.GetPrice();
            decimal actualPrice2 = couponDiscountLineItem2.GetPrice();

            // Assert
            Assert.Multiple(() =>
            {
                Assert.That(actualPrice1, Is.EqualTo(expectedPrice1));
                Assert.That(actualPrice2, Is.EqualTo(expectedPrice2));
            });
        }
コード例 #3
0
        public void ByWeightLineItemHasCorrectPriceTest()
        {
            // Arrange
            const int     id               = 1;
            const double  weightInKilos    = 5.0;
            ILineItem     byWeightLineItem = new ByWeightLineItem(id, weightInKilos);
            const decimal expectedPrice    = 25.00m;

            // Act
            decimal actualPrice = byWeightLineItem.GetPrice();

            // Assert
            Assert.That(actualPrice, Is.EqualTo(expectedPrice));
        }
コード例 #4
0
        public void ShoppingCartWithByWeightLineItemHasCorrectPriceTest()
        {
            // Arrange
            IShoppingCart shoppingCart     = new ShoppingCart();
            ILineItem     byWeightLineItem = new ByWeightLineItem(1, 5);
            const decimal expectedPrice    = 25.00m;

            // Act
            shoppingCart.Add(byWeightLineItem);
            decimal actualPrice = shoppingCart.GetPrice();

            // Assert
            Assert.That(actualPrice, Is.EqualTo(expectedPrice));
        }