示例#1
0
        static void Main(string[] args)
        {
            Category category1 = new Category("category1");
            Category category2 = new Category("category2");


            Product product1 = new Product("Product1", 100, category1);
            Product product2 = new Product("Product2", 50, category1);
            Product product3 = new Product("Product3", 40, category2);



            ICampaign rateCampaign   = new RateCampaign(20.0, 5, category1);
            ICampaign amountCampaing = new AmountCampaign(10.0, category2);

            IShoppingCart shoppingcart = new ShoppingCart(new DeliveryCost(1.5, 10));

            shoppingcart.AddProduct(product1, 12);
            shoppingcart.AddProduct(product2, 10);
            shoppingcart.AddProduct(product3, 11);

            List <ICampaign> campaigns = new List <ICampaign>();

            campaigns.Add(rateCampaign);
            campaigns.Add(amountCampaing);
            ICoupon rateCoupon = new RateCoupon(5.0, 3);

            shoppingcart.AddCampaign(campaigns);
            shoppingcart.AddCoupon(rateCoupon);
            double totalAmount = shoppingcart.GetTotalAmountAfterDiscounts();

            System.Console.WriteLine(shoppingcart.Print());
            System.Console.ReadLine();
        }
示例#2
0
        public void DeveryScenario_Should_Work()
        {
            // Arrange
            var shoppingCart = new ShoppingCart(1);
            var category     = new FirstCategory(1, "Food");
            var apple        = new FirstProduct(1, "Apple", 100, category);
            var almonds      = new FirstProduct(1, "Almonds", 150, category);

            shoppingCart.AddProduct(apple, 3);
            shoppingCart.AddProduct(almonds);

            var campaign1 = new CampaignDiscountByPercentage(1, "Food Campaign 1", 20, category, 3);
            var campaign2 = new CampaignDiscountByPercentage(2, "Food Campaign 2", 50, category, 5);
            var campaign3 = new CampaignDiscountByAmount(3, "Food Campaign 3", 5, category, 0);
            var campaigns = new List <CampaignBase>()
            {
                campaign1, campaign2, campaign3
            };

            var coupon = new CouponDiscountByPercentage(1, 100, 10);

            shoppingCart.AddCoupon(coupon);

            var delivery = new DeliverDynamic((decimal)2.99, 5, 3);

            // Act

            shoppingCart.ApplyDiscounts(campaigns);

            shoppingCart.ApplayDelivery(delivery);
            // Assert
            Assert.True(shoppingCart._isCouponApplied == true && shoppingCart._isCampaignApplied == true);
        }
示例#3
0
        public void AddCoupon_With_Invalid_Value_Throw_ArgumentException()
        {
            // Arrange
            var test = new ShoppingCart(1);

            // Act


            // Assert
            Assert.Throws <ArgumentException>(() => test.AddCoupon(null));
        }
示例#4
0
        public void AddCoupon_ShouldWork()
        {
            // Arrange
            var test   = new ShoppingCart(1);
            var coupon = new CouponDiscountByAmount(1, 1, 1);

            // Act
            test.AddCoupon(coupon);

            // Assert
            Assert.True(test._cartCoupons != null && test._cartCoupons.Contains(coupon));
        }
示例#5
0
        public void AddCoupon_Should_Work()
        {
            // Arrange
            var shoppingCart = new ShoppingCart(1);
            var category     = new FirstCategory(1, "test");
            var product      = new FirstProduct(1, "test", 100, category);
            var product2     = new FirstProduct(1, "test", 100, category);
            var product3     = new FirstProduct(1, "test", 100, category);

            shoppingCart.AddProduct(product);
            shoppingCart.AddProduct(product2);
            shoppingCart.AddProduct(product3);

            var coupon = new CouponDiscountByAmount(1, 100, 20);

            shoppingCart.AddCoupon(coupon);

            // Act
            shoppingCart.ApplyCoupon();
            // Assert
            Assert.True(shoppingCart._isCouponApplied == true);
        }
示例#6
0
        static void Main(string[] args)
        {
            var shoppingCart = new ShoppingCart(1);
            var category     = new FirstCategory(1, "Food");
            var apple        = new FirstProduct(1, "Apple", 100, category);
            var almonds      = new FirstProduct(2, "Almonds", 150, category);

            shoppingCart.AddProduct(apple, 3);
            shoppingCart.AddProduct(almonds);

            var campaign1 = new CampaignDiscountByPercentage(1, "Food Campaign 1", 20, category, 3);
            var campaign2 = new CampaignDiscountByPercentage(2, "Food Campaign 2", 50, category, 5);
            var campaign3 = new CampaignDiscountByAmount(3, "Food Campaign 3", 5, category, 0);
            var campaigns = new List <CampaignBase>()
            {
                campaign1, campaign2, campaign3
            };

            var coupon = new CouponDiscountByPercentage(1, 100, 10);

            shoppingCart.AddCoupon(coupon);

            var delivery = new DeliverDynamic((decimal)2.99, 5, 3);

            // Act

            shoppingCart.ApplyDiscounts(campaigns);

            shoppingCart.ApplayDelivery(delivery);
            Console.WriteLine("Indirim öncesi Tutar : " + shoppingCart.SumOfProducts);
            Console.WriteLine("Indirim sonrası Tutar : " + shoppingCart.TotalAmountAfterDiscount);
            Console.WriteLine("Kullanılan Kopon : " + shoppingCart._couponTotalDiscount);
            Console.WriteLine("Kampanya indirimi : " + shoppingCart._campaignMaxDiscount);

            var campaignsHasMaxDiscountByCategory = from c in shoppingCart._selectedProducts
                                                    group c by c._category into ctg
                                                    select ctg;

            foreach (var item in campaignsHasMaxDiscountByCategory)
            {
                var appliedCampaign = shoppingCart._appliedCampaigns.FirstOrDefault(x => x._category == item.Key);
                Console.Write(item.First()._category._title);
                if (appliedCampaign != null)
                {
                    Console.Write("  uygulanan kampanya :  " + appliedCampaign._calculatedDiscountAmount);
                }
                Console.WriteLine();

                var produsctTypes = from c in item
                                    group c by c._id into prd
                                    select prd;

                foreach (var item2 in produsctTypes)
                {
                    Console.WriteLine(item2.First()._title + " " + item2.Count() + " " + item2.Sum(x => x._price));
                }
            }


            Console.WriteLine("Kargo maliyeti : " + shoppingCart._deliveryCost);
            Console.WriteLine("Toplam Maliyet Tutarı : " + shoppingCart.TotalySumAffterDelivery);

            Console.ReadLine();
        }