public void ReportErrorParseBasketIfNoArgs()
        {
            var basketBuilder = new BasketBuilder();
            var basket        = new Basket();

            Assert.False(basketBuilder.Parse(null, out basket));;
            StringAssert.AreEqualIgnoringCase("No Items Given to Price Calculator", basketBuilder.ParseError);
        }
Beispiel #2
0
 public BasketFunctions(BasketRepository basketRepo,
                        BasketItemRepository itemsRepo,
                        ProductRepository productRepo,
                        BasketBuilder basketBuilder)
 {
     _basketRepo    = basketRepo ?? throw new ArgumentNullException(nameof(BasketRepository));
     _itemRepo      = itemsRepo ?? throw new ArgumentNullException(nameof(BasketRepository));
     _productRepo   = productRepo ?? throw new ArgumentNullException(nameof(BasketRepository));
     _basketBuilder = basketBuilder ?? throw new ArgumentNullException(nameof(BasketRepository));
 }
        public void NotParseBasket(object[] testArg, string expectedError)
        {
            var args = new List <string>();

            foreach (var test in testArg)
            {
                args.Add(test.ToString());
            }

            var basketBuilder = new BasketBuilder();

            Assert.False(basketBuilder.Parse(args.ToArray(), out var basket));
            StringAssert.StartsWith(expectedError, basketBuilder.ParseError);
        }
        public void ParseBasket(object[] testArg, int expectedCount)
        {
            var args = new List <string>();

            foreach (var test in testArg)
            {
                args.Add(test.ToString());
            }

            var basketBuilder = new BasketBuilder();

            Assert.True(basketBuilder.Parse(args.ToArray(), out var basket));
            Assert.That(basket.goods.Count(), Is.EqualTo(expectedCount));;;
        }
        public void CalculateWithBreadAndBeansOffers()
        {
            var printer       = Substitute.For <IPrinter>();
            var basketBuilder = new BasketBuilder();

            basketBuilder.Parse(new string[] { "Beans", "Beans", "Bread" }, out var basket);
            var specialOffers = new SpecialOffers();

            var priceCalculator = new PriceCalculator(printer, specialOffers);

            priceCalculator.Calculate(basket);

            printer.Received().PrintLine(Arg.Is <string>(x => x.StartsWith("Subtotal")));
            printer.Received().PrintLine(Arg.Is <string>(x => x.StartsWith("Buy 2 cans of ")));
            printer.Received().PrintLine(Arg.Is <string>(x => x.StartsWith("Total price:")));
        }
        public void CalculateWithLotsOfApplesOffers()
        {
            var printer       = Substitute.For <IPrinter>();
            var basketBuilder = new BasketBuilder();

            basketBuilder.Parse(new string[] { "Apples", "Apples", "Apples", "Apples" }, out var basket);
            var specialOffers = new SpecialOffers();

            var priceCalculator = new PriceCalculator(printer, specialOffers);

            priceCalculator.Calculate(basket);

            printer.Received().PrintLine(Arg.Is <string>(x => x.StartsWith("Subtotal: ")));
            printer.Received().PrintLine(Arg.Is <string>(x => x.StartsWith("Apples 10% off:: 40p")));
            printer.Received().PrintLine(Arg.Is <string>(x => x.StartsWith("Total price: ")));
        }
Beispiel #7
0
        private IBasket BasketToDto(StormBasket stormBasket)
        {
            BasketBuilder basketBuilder = new BasketBuilder(_configuration);

            return(basketBuilder.BuildBasketDto(stormBasket));
        }
Beispiel #8
0
        public void BasketBuilderShouldCorrectlyBuildBasket()
        {
            //Arrange
            var products       = new[] { "Milk", "Apples", "Milk", "Bread" };
            var productService = new Mock <IProductService>();

            productService.Setup(service => service.GetProduct("Milk")).Returns(
                new Product
            {
                ProductId   = 3,
                Price       = 130,
                ProductName = "Milk"
            }
                );
            productService.Setup(service => service.GetProduct("Apples")).Returns(
                new Product
            {
                ProductId   = 1,
                Price       = 100,
                ProductName = "Apples"
            }
                );
            productService.Setup(service => service.GetProduct("Bread")).Returns(
                new Product
            {
                ProductId   = 2,
                Price       = 80,
                ProductName = "Bread"
            }
                );
            var currentOffers = new Mock <ICurrentOffers>();
            var discountType  = new Offer {
                DiscountCode = "TenPercentOff", DiscountDetail = "Apples 10% off", ProductId = 1
            };

            currentOffers.Setup(offers => offers.GetCurrentOffers()).Returns(
                new List <Offer>
            {
                new Offer
                {
                    ProductId      = 1,
                    DiscountCode   = "TenPercentOff",
                    DiscountDetail = "Apples 10% off"
                }
            });
            var expectedResult = new List <BasketItem>
            {
                new BasketItem
                {
                    ProductId     = 3,
                    NumberOfItems = 2,
                    PricePerItem  = 130,
                    OfferType     = null,
                    ProductName   = "Milk"
                },
                new BasketItem
                {
                    ProductId     = 1,
                    PricePerItem  = 100,
                    NumberOfItems = 1,
                    OfferType     = discountType,
                    ProductName   = "Apples"
                },
                new BasketItem
                {
                    ProductId     = 2,
                    PricePerItem  = 80,
                    NumberOfItems = 1,
                    OfferType     = null,
                    ProductName   = "Bread"
                }
            };

            //Act
            var sut          = new BasketBuilder(currentOffers.Object, productService.Object);
            var actualResult = sut.Build(products);


            //Assert
            CollectionAssert.AreEquivalent(expectedResult, actualResult);
        }
 public QuantitiesTests()
 {
     var testBasket = new BasketBuilder()
                      .BasketWithOneProduct(12.9m)
                      .Build();
 }