コード例 #1
0
        public void CalculateOrder_WithOut_Promotion()
        {
            ///Arrange
            List <Sku> selectedSkus = new List <Sku>
            {
                new Sku {
                    SkuId = 'A', UnitPrice = 50, Quantity = 3
                },
                new Sku {
                    SkuId = 'B', UnitPrice = 30, Quantity = 3
                },
                new Sku {
                    SkuId = 'C', UnitPrice = 20, Quantity = 2
                },
                new Sku {
                    SkuId = 'D', UnitPrice = 15, Quantity = 2
                }
            };

            Cart checkoutCart = new Cart {
                Skus = selectedSkus
            };
            OrderCalculator orderCalculator = new OrderCalculator();

            ///Act
            orderCalculator.CalculateTotal(checkoutCart);

            ///Assert
            Assert.IsTrue(checkoutCart.OrderTotal.ToString().Equals("310"));
        }
コード例 #2
0
        public void CalculateOrder_With_Promotion_With_Quotient()
        {
            ///Arrange
            List <Sku> selectedSkus = new List <Sku>
            {
                new Sku {
                    SkuId = 'A', UnitPrice = 50, Quantity = 10
                },
                new Sku {
                    SkuId = 'B', UnitPrice = 30, Quantity = 4
                },
                new Sku {
                    SkuId = 'C', UnitPrice = 20, Quantity = 13
                },
                new Sku {
                    SkuId = 'D', UnitPrice = 15, Quantity = 1
                }
            };

            List <Promotion> activePromotions = new List <Promotion>
            {
                new Promotion {
                    SkuId = 'A', IsMutualExclusive = false, PromotionPercentage = 13, PromotionQuantity = 3
                },
                new Promotion {
                    SkuId = 'B', IsMutualExclusive = false, PromotionPercentage = 4, PromotionQuantity = 2
                },
                new Promotion {
                    SkuId = 'C', IsMutualExclusive = false, PromotionPercentage = 20, PromotionQuantity = 10
                },
                new Promotion {
                    SkuId = 'D', IsMutualExclusive = false, PromotionPercentage = 0, PromotionQuantity = 1
                }
            };

            Cart checkoutCart = new Cart {
                Skus = selectedSkus, Promotions = activePromotions
            };
            OrderCalculator orderCalculator = new OrderCalculator();

            ///Act
            orderCalculator.CalculateTotal(checkoutCart);

            ///Assert
            Assert.AreEqual(checkoutCart.GrandPromotionTotal.ToString(), "103.3");
            Assert.AreEqual(checkoutCart.GrandTotal.ToString(), "895");
            Assert.AreEqual(checkoutCart.OrderTotal.ToString(), "791.7");
        }