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); }
public void Create_CampaigDiscountByAmount_Should_Work_Tehory(int id, string title, decimal discount, int trashold) { // Arrange CategoryBase category = new FirstCategory(1, "First"); // Act var test = new CampaignDiscountByAmount(id, title, discount, category, trashold); // Assert Assert.True(test != null && test._id == id && test._title.Equals(title) && test._category == category); }
public void CalculateDiscount_For_CampaigDiscountByAmount_Should_Work() { // Arrange CategoryBase category = new FirstCategory(1, "First"); var test = new CampaignDiscountByAmount(1, "test", 1, category, 3); // Act test.CalculateDiscount(null); // Assert Assert.True(test._calculatedDiscountAmount == 0); }
public void CalculateDiscount_For_CampaigDiscountByAmount_Should_Work_AndApply_Discount() { // Arrange CategoryBase category = new FirstCategory(1, "First"); var products = new List <ProductBase>(); products.Add(new FirstProduct(1, "test", 10, category)); products.Add(new FirstProduct(1, "test", 10, category)); products.Add(new FirstProduct(1, "test", 10, category)); var test = new CampaignDiscountByAmount(1, "test", 5, category, 3); // Act test.CalculateDiscount(products); // Assert Assert.True(test._calculatedDiscountAmount == 15); }
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(); }