public void GivenNulProduct_WhenApplyDiscount_ThenThrowwsException() { var discount = new PercentageRule(); Assert.Throws <ArgumentNullException>(() => { discount.ApplyDiscount(null); }); }
public void Then_It_Should_Not_Be_Enabled() { var toggle = new FeatureToggle("test-toggle", "DevOps", "Test", true); var mockedHttpContext = new Mock <HttpContext>(); mockedHttpContext.SetupGet(x => x.Connection.RemoteIpAddress).Returns(IPAddress.Parse("127.0.0.1")); toggle.Enrich(mockedHttpContext.Object); var rule = new PercentageRule(70); var actual = rule.IsEnabled(toggle); Assert.False(actual); }
public void GivenProductHasNotMatchingDiscountRule_WhenApplyDiscount_ThenThrowwsException() { var discount = new PercentageRule(); var item = new BasketItem { Quantity = 2, AfterDiscountPrice = 0, DiscountRuleType = DiscountRuleType.None, Product = new Product { Price = (decimal)12.33 } }; Assert.Throws <InvalidOperationException>(() => { discount.ApplyDiscount(item); }); }
public void GivenProduct_WhenApplyDiscount_ThenReturnsCorrectPrice(int qty, int percent, decimal price, decimal result) { var discount = new PercentageRule(); var item = new BasketItem { Quantity = qty, AfterDiscountPrice = 0, DiscountRuleType = DiscountRuleType.Percentage, DiscountParameter = percent, Product = new Product { Price = price } }; discount.ApplyDiscount(item); Assert.AreEqual(result, item.AfterDiscountPrice); }
public void TestReportingRoundtripOutThenInPositionReport() { // payment rules abstract type issue var orig = new PositionReport() { fpmlVersion = "5-3", position = new[] { new ReportedPosition() { constituent = new PositionConstituent() { Item = new Trade() { collateral = new Collateral() { independentAmount = new IndependentAmount() { paymentDetail = new[] { new PaymentDetail() { id = "id0", paymentRule = new PercentageRule() { paymentPercentSpecified = true, paymentPercent = 5.0M } } } } } } } } } }; PositionReport copy = Roundtrip_OutThenIn(orig, true, false); // tests Trade trade = (Trade)copy.position[0].constituent.Item; PercentageRule rule = (PercentageRule)trade.collateral.independentAmount.paymentDetail[0].paymentRule; Assert.IsTrue(rule.paymentPercentSpecified); Assert.AreEqual(5.0M, rule.paymentPercent); }