Beispiel #1
0
        public void GetBasketTotal_NoOffer(int apples, int biscuits, int coconuts, decimal expectedBasketTotal)
        {
            IBasketManager sut = new BasketManagerImpl(_mockLogger.Object);

            Basket myBasket = new Basket()
            {
                Id    = "My test basket",
                Items = new Dictionary <Item, int>()
                {
                    { aValidApple, apples },
                    { aValidBiscuit, biscuits },
                    { aValidCoconut, coconuts }
                }
            };

            Assert.True(sut.GetTotal(myBasket) == expectedBasketTotal);
        }
Beispiel #2
0
        public string GetTotal()
        {
            string total = "";

            try
            {
                IBasketManager basketManager = new BasketManagerImpl(_log);
                IOfferManager  offerManager  = new OfferManagerImpl(_log);

                string totalWithoutOffers = basketManager.GetTotal(basket).ToString();
                string totalWithOffers    = basketManager.GetTotal(basket, offerManager).ToString();

                StringBuilder sb = new StringBuilder();
                sb.AppendLine($"Total without offers: {totalWithoutOffers}");
                sb.AppendLine($"Total with offers: {totalWithOffers}");

                total = sb.ToString();
            }
            catch (Exception ex)
            {
                _log.LogCritical(ex, $"{nameof(BasketController)}.{nameof(GetTotal)} failed");
            }
            return(total);
        }
Beispiel #3
0
        public void GetBasketTotal_OfferManagerIsCalled3Times()
        {
            IBasketManager       sut          = new BasketManagerImpl(_mockLogger.Object);
            Mock <IOfferManager> offerManager = new Mock <IOfferManager>();

            Basket myBasket = new Basket()
            {
                Id    = "My test basket",
                Items = new Dictionary <Item, int>()
                {
                    { aValidApple, 3 },
                    { aValidBiscuit, 2 },
                    { aValidCoconut, 1 }
                }
            };

            int expectedNumberOfitemTypes = 3;//Apple,Coconut,Biscuits

            offerManager.Setup(o => o.GetOfferForItem(It.IsAny <Item>()));

            sut.GetTotal(myBasket, offerManager.Object);

            offerManager.Verify(o => o.GetOfferForItem(It.IsAny <Item>()), Times.Exactly(expectedNumberOfitemTypes));
        }
Beispiel #4
0
        public string Post([FromBody] Item item)
        {
            string message = "";

            try
            {
                if (item == null)
                {
                    throw new FormatException("Item is null");
                }

                if (!validItems.Contains(item.Id))
                {
                    throw new FormatException($"Item of id {item.Id} is not supported");
                }

                if (item.Price <= 0.00m)
                {
                    throw new FormatException($"Price can't be null or negative");
                }

                if (String.IsNullOrEmpty(item.Name))
                {
                    throw new FormatException($"Name can't be empty");
                }

                IItemManager itemManager = new ItemManagerImpl(_log);
                bool         success     = itemManager.AddItemToBasket(item, ref basket);


                IBasketManager basketManager = new BasketManagerImpl(_log);
                IOfferManager  offerManager  = new OfferManagerImpl(_log);
                string         total         = basketManager.GetTotal(basket, offerManager).ToString();

                StringBuilder sb = new StringBuilder();

                if (success)
                {
                    sb.AppendLine($"Successfully added item {item.Name} to basket {basket.Id}");
                }
                else
                {
                    sb.AppendLine($"Failed to add item {item.Name} to basket {basket.Id}");
                }

                sb.AppendLine($"Current total with offers is: £{total}");

                message = sb.ToString();
            }
            catch (FormatException fex)
            {
                _log.LogInformation(fex, "Bad Item");
                message = fex.Message;
            }
            catch (Exception ex)
            {
                _log.LogCritical(ex, "Failed to add an item");
                message = ex.Message;
            }

            return(message);
        }
Beispiel #5
0
        public void Constructor()
        {
            IBasketManager sut = new BasketManagerImpl(_mockLogger.Object);

            Assert.NotNull(sut);
        }