Example #1
0
        private IList <BroAmount> GetTotal()
        {
            var amounts = TotalCalculator.Calculate(repository.GetTotal(), repository.GetPendingTransactions());
            var bros    = repository.GetBros();

            return(amounts.OrderBy(x => bros.First(b => b.Id == x.Bro).Name).ToArray());
        }
Example #2
0
        public void CalculateCallsAllDiscounts()
        {
            var firstDiscountMock  = new Mock <IDiscount>();
            var secondDiscountMock = new Mock <IDiscount>();
            var priceProviderMock  = new Mock <IPriceProvider>();

            priceProviderMock
            .Setup(x => x.GetPrice(It.IsAny <string>()))
            .Returns(0m);
            var totalCalculator = new TotalCalculator(
                new List <IDiscount>
            {
                firstDiscountMock.Object, secondDiscountMock.Object
            },
                priceProviderMock.Object);

            var basketItems = new List <BasketItem>
            {
                new BasketItem("test_product")
            };

            totalCalculator.Calculate(basketItems);

            firstDiscountMock.Verify(x => x.GetDiscount(basketItems), Times.Once);
            secondDiscountMock.Verify(x => x.GetDiscount(basketItems), Times.Once);
        }
Example #3
0
        public void CalculateReturnsTotalWithSumOfDiscounts()
        {
            var priceProviderMock = new Mock <IPriceProvider>();

            priceProviderMock
            .Setup(x => x.GetPrice(It.IsAny <string>()))
            .Returns(100m);

            var basketItems = new List <BasketItem>
            {
                new BasketItem("test_product")
            };

            var firstDiscountMock  = new Mock <IDiscount>();
            var secondDiscountMock = new Mock <IDiscount>();

            firstDiscountMock
            .Setup(x => x.GetDiscount(basketItems))
            .Returns(10m);
            secondDiscountMock
            .Setup(x => x.GetDiscount(basketItems))
            .Returns(2m);

            var totalCalculator = new TotalCalculator(
                new List <IDiscount>
            {
                firstDiscountMock.Object, secondDiscountMock.Object
            },
                priceProviderMock.Object);

            var total = totalCalculator.Calculate(basketItems);

            Assert.AreEqual(88m, total);
        }
        public ActionResult GetTotal()
        {
            using (var db = DbFactory.Open())
            {
                List <Transaction> transactions;
                List <Bro>         bros;
                Dictionary <Bro, Dictionary <Currency, decimal> > total;

                using (new PerfCounter("total-transactions")) transactions = db.Query <Transaction>().ToList();
                using (new PerfCounter("total-bros")) bros = db.Query <Bro>().ToList();
                using (new PerfCounter("total-calcall")) total = TotalCalculator.Calculate(transactions, bros);

                var result = total.Keys.Select(bro => new BroTotalRest(bro, total[bro])).ToList();
                return(Json(result, JsonRequestBehavior.AllowGet));
            }
        }