Пример #1
0
        public void Setup()
        {
            var freeMilkDiscount       = new FreeMilkDiscount();
            var butterAndBreadDiscount = new ButterAndBreadDiscount();

            _basketCalculator = new BasketCalculator(freeMilkDiscount, butterAndBreadDiscount);

            _testButter = new Product
            {
                Id          = 1,
                Name        = "Butter",
                DiscountTag = DiscountTag.Butter,
                Price       = 0.80m
            };
            _testMilk = new Product
            {
                Id          = 2,
                Name        = "Milk",
                DiscountTag = DiscountTag.Milk,
                Price       = 1.15m
            };
            _testBread = new Product
            {
                Id          = 3,
                Name        = "Bread",
                DiscountTag = DiscountTag.Bread,
                Price       = 1.00m
            };
        }
 public void Setup()
 {
     _basketCalculator = new BasketCalculator();
     _testButter       = new Product
     {
         Id          = 1,
         Name        = "Butter",
         DiscountTag = DiscountTag.Butter,
         Price       = 0.80m
     };
     _testMilk = new Product
     {
         Id          = 2,
         Name        = "Milk",
         DiscountTag = DiscountTag.Milk,
         Price       = 1.15m
     };
     _testBread = new Product
     {
         Id          = 3,
         Name        = "Bread",
         DiscountTag = DiscountTag.Bread,
         Price       = 1.00m
     };
 }
Пример #3
0
        public void GetDiscountedType()
        {
            string[]         basket           = new[] { "1", "1", "2" };
            BasketCalculator basketCalculator = new BasketCalculator(basket);
            var discountedType = basketCalculator.GetDiscountedType();

            Assert.True(discountedType[0] == 1);
        }
Пример #4
0
        public void GetFinalAmount1()
        {
            string[]         basket           = new[] { "1", "1", "2", "2", "3", "3", "4", "5" };
            BasketCalculator basketCalculator = new BasketCalculator(basket);
            var finalAmount = basketCalculator.GetFinalAmount();

            Assert.True(finalAmount == 51.20m);
        }
Пример #5
0
        public void GetFinalAmount2()
        {
            string[]         basket           = new[] { "1", "1", "2" };
            BasketCalculator basketCalculator = new BasketCalculator(basket);
            var finalAmount = basketCalculator.GetFinalAmount();

            Assert.True(finalAmount == 23.2m);
        }
Пример #6
0
        public string Process(string[] args)
        {
            // read input from user
            IBasketInputReader basketInputReader = new BasketInputReader();
            ShoppingBasket     shoppingBasket    = basketInputReader.CreateBasketFromInput(args, _productsDL);

            // calculate snopping basket price
            IBasketCalculator basketCalculator = new BasketCalculator(_specialOffersDL);
            CalculatedPrice   calculatedPrice  = basketCalculator.CalculatePrice(shoppingBasket);

            // write output
            IBasketPriceWriter basketPriceWriter = new BasketPriceWriter();

            return(basketPriceWriter.GetOutputString(calculatedPrice));
        }
Пример #7
0
        public void CalculateBasketWithBeansAndBreadDiscount()
        {
            var basket = new Basket();

            basket.AddBasketItem(Products.GetProduct("Beans"));
            basket.AddBasketItem(Products.GetProduct("Beans"));
            basket.AddBasketItem(Products.GetProduct("Bread"));

            var calculator = new BasketCalculator(Products, Promotions, basket);

            calculator.CalculateBasket(new DateTime(2020, 6, 18));

            calculator.SubTotal.ShouldBe(new decimal(2.10));
            calculator.DiscountsItems.Count.ShouldBe(1);
            calculator.DiscountsItems[0].Amount.ShouldBe(new decimal(.40));
            calculator.Total.ShouldBe(new decimal(1.70));
        }
Пример #8
0
        public void CalculateBasketWithOutAppleDiscountAsPromotionExpired()
        {
            var basket = new Basket();

            basket.AddBasketItem(Products.GetProduct("Apples"));
            basket.AddBasketItem(Products.GetProduct("Milk"));
            basket.AddBasketItem(Products.GetProduct("Bread"));

            var calculator = new BasketCalculator(Products, Promotions, basket);

            //Use an date in the future after promotion ended
            calculator.CalculateBasket(new DateTime(2021, 6, 18));

            calculator.SubTotal.ShouldBe(new decimal(3.10));
            calculator.DiscountsItems.Count.ShouldBe(0);
            calculator.Total.ShouldBe(new decimal(3.10));
        }
Пример #9
0
    protected void Display_ViewBaskets(bool WithEdit)
    {
        Ektron.Cms.Commerce.Basket currentBasket;
        long basketId = 0;
        CouponApi _CouponApi = new CouponApi();
        BasketCalculatorData basketCouponData;

        if ((Request.QueryString["basketid"] != null) && Request.QueryString["basketid"] != "")
        {
            basketId = Convert.ToInt64(Request.QueryString["basketid"]);
        }

        if (basketId > 0)
        {

            HttpBrowserCapabilities browser = Request.Browser;
            Ektron.Cms.Framework.Context.CmsContextService context = new Ektron.Cms.Framework.Context.CmsContextService();

            if (browser.Type.Contains("IE") && browser.MajorVersion >= 9)
            {
                // work around to prevent errors in IE9 when it destroys native JS objects
                // see http://msdn.microsoft.com/en-us/library/gg622929%28v=VS.85%29.aspx
                uxViewBasketIframe.Attributes.Add("src", "about:blank");
            }
            else
            {
                uxViewBasketIframe.Attributes.Add("src", context.SitePath + "customers.aspx?action=viewbasket&basketid=" + basketId + "&customerid=" + m_iCustomerId + "&thickox=true&height=300&width=700&modal=true&EkTB_iframe=true");
            }
            uxDialog.Title = m_refMsg.GetMessage("lbl view basket");

            currentBasket = basketApi.GetItem(basketId);
            if ((currentBasket != null) && currentBasket.Items.Count > 0)
            {
                dg_viewbasket.DataSource = currentBasket.Items;
                dg_viewbasket.DataBind();
                BasketCalculator basketCalc = new BasketCalculator(currentBasket, this.m_refContentApi.RequestInformationRef);

                basketCouponData = _CouponApi.CalculateBasketCoupons(basketId);

                if (basketCouponData.BasketCoupons.Count > 0)
                {
                    ltr_noitems.Text = "<hr/><table width=\"100%\">";
                    ltr_noitems.Text += "<tr><td align=\"right\" width=\"90%\">" + GetMessage("lbl coupon discount") + "</td><td align=\"right\">(" + Ektron.Cms.Common.EkFunctions.FormatCurrency(basketCouponData.TotalCouponDiscount, defaultCurrency.CultureCode) + ")</td></tr>";
                    ltr_noitems.Text += "<tr><td align=\"right\" width=\"90%\">" + GetMessage("lbl total") + ": </td><td align=\"right\">" + Ektron.Cms.Common.EkFunctions.FormatCurrency(basketCouponData.BasketTotal, defaultCurrency.CultureCode) + "</td></tr>";
                    ltr_noitems.Text += "</table>";
                }
            }
            else
            {
                ltr_noitems.Text = this.GetMessage("lbl no items");
            }
        }
        else
        {
            ltr_noitems.Text = this.GetMessage("lbl no items");
        }
    }