public void CouponCalculateTestThrows(double price, double value) { var discount = new CouponDiscount(value); Assert.That(() => discount.Calculate(price), Throws.TypeOf <ArgumentException>()); }
public void Cannot_calculate_coupon_discount_for_empty_cart_products_list() { //setup var couponDiscount = new CouponDiscount(threshold: 100, discount: 5); Assert.Throws <ApplicationException>(() => couponDiscount.Calculate(cartProducts: null, cartSubtotal: 100)); Assert.Throws <ApplicationException>(() => couponDiscount.Calculate(cartProducts: new List <CartProduct>(), cartSubtotal: 100)); }
private IFinalPrice UseCouponDiscount(IFinalPrice cart, ref string view) { var coupon = new CouponDiscount(cart, _discountVariablesRepository); coupon.AdjustPriceByCouponDiscount(); view += "Coupon discount adjustment : $" + cart.GetAdjustment() * -1 + " \n"; view += "Price after coupon discount : $" + cart.GetFinalPrice() + " \n"; return(coupon.AdjustedCart); }
private Coupon CreateCoupon(int index, bool canBeUsedOnce, CouponDiscount discount, IList <Guid> redeemerIds, IList <Guid> productIds) { var coupon = new Coupon { Code = string.Format(CouponCodeFormat, index), Discount = discount, IsEnabled = true, CanBeUsedOnce = canBeUsedOnce, RedeemerIds = redeemerIds, ProductIds = productIds, }; _couponsCommand.CreateCoupon(coupon); return(coupon); }
public void Can_get_discount_with_coupon() { //setup var product1 = new Product(code: "9501101530005", name: "Cheese set", price: 30m); var product2 = new Product(code: "9501101530006", name: "Hennessy cognac", price: 70); var discount = new CouponDiscount(threshold: 100m, discount: 5m); var sut = new CashRegister(new[] { product1, product2 }, new [] { discount }); //act sut.Scan(product1.Code); sut.Scan(product2.Code); var totalPrice = sut.CalculatePrice(); Assert.That(totalPrice, Is.EqualTo(95)); }
public void Cannot_calculate_coupon_discount_for_invalid_cart_subTotal() { //setup var couponDiscount = new CouponDiscount(threshold: 100, discount: 5); var cartProduct = new CartProduct(new Product(code: "9501101530002", name: "Cheerios", price: 6.99m)); Assert.Throws <ApplicationException>(() => couponDiscount.Calculate(cartProducts: new List <CartProduct>() { cartProduct }, cartSubtotal: 0)); Assert.Throws <ApplicationException>(() => couponDiscount.Calculate(cartProducts: new List <CartProduct>() { cartProduct }, cartSubtotal: -100)); }
public void Fill(System.Data.IDataReader dr) { _couponID = Convert.ToInt32(dr["CouponID"]); _portalID = Convert.ToInt32(dr["PortalID"]); _code = Convert.ToString(dr["Code"]); _description = Convert.ToString(dr["Description"]); _ruleType = (CouponRule)(dr["RuleType"]); _ruleAmount = Convert.ToDecimal(Null.SetNull(dr["RuleAmount"], _ruleAmount)); _discountType = (CouponDiscount)(dr["DiscountType"]); _discountPercentage = Convert.ToInt32((Null.SetNull(dr["DiscountPercentage"], _discountPercentage))); _discountAmount = Convert.ToDecimal((Null.SetNull(dr["DiscountAmount"], _discountAmount))); _applyTo = (CouponApplyTo)(dr["ApplyTo"]); _itemID = Convert.ToInt32(Null.SetNull(dr["ItemID"], _itemID)); _includeSubCategories = Convert.ToBoolean(Null.SetNull(dr["IncludeSubCategories"], _includeSubCategories)); _startDate = Convert.ToDateTime(dr["StartDate"]); _endDate = Convert.ToDateTime(dr["EndDate"]); _validity = (CouponValidity)(dr["Validity"]); _createdByUserID = Convert.ToInt32(dr["CreatedByUserID"]); _createdDate = Convert.ToDateTime(dr["CreatedDate"]); }
private void DisplayDiscountTypeRows() { CouponDiscount discountType = (CouponDiscount)rblDiscountType.SelectedIndex; switch (discountType) { case CouponDiscount.Percentage: trDiscountPercentage.Visible = true; trDiscountAmount.Visible = false; break; case CouponDiscount.FixedAmount: trDiscountPercentage.Visible = false; trDiscountAmount.Visible = true; break; case CouponDiscount.FreeShipping: trDiscountPercentage.Visible = false; trDiscountAmount.Visible = false; break; } }
public static decimal DiscountedPrice (CouponDiscount discount, string priceCurrency, decimal price) { // C# 7 feature: this was much worse just a few months ago. switch (discount) { case PercentOffCouponDiscount percentOff: return(price - (price * percentOff.PercentOff / 100.0m)); case AmountOffCouponDiscount amountOff: if (priceCurrency == amountOff.Currency) { return(price - amountOff.Amount); } throw new ArgumentException ("Currency does not match", "priceCurrency"); // we always have to handle this since somebody could subclass // CouponDiscount with an unexpected type default: throw new ArgumentException ("Unknown type", nameof(discount)); } }
public double ValueTest() { var discount = new CouponDiscount(1000); return(discount.Value()); }
public string DescriptionTest() { var discount = new CouponDiscount(1000); return(discount.Description); }
public double CouponValueTest(double value) { var discount = new CouponDiscount(value); return(discount.CouponValue); }
public void CouponCalculateTest(double price, double value, double result) { var discount = new CouponDiscount(value); Assert.That(() => discount.Calculate(price), Is.EqualTo(result)); }
private static decimal GetDiscount(decimal price, CouponDiscount discount) { return(discount is PercentageCouponDiscount ? GetDiscount(price, ((PercentageCouponDiscount)discount).Percentage) : Math.Round(((FixedCouponDiscount)discount).Amount, 2)); }