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); }
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: "))); }
private IBasket BasketToDto(StormBasket stormBasket) { BasketBuilder basketBuilder = new BasketBuilder(_configuration); return(basketBuilder.BuildBasketDto(stormBasket)); }
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(); }