Beispiel #1
0
        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);
            }
Beispiel #3
0
        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);
            });
        }
Beispiel #4
0
        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);
        }