public void MultipleProducts_Mocks() { // Arrange var cart = A.Fake <ICart>(); A.CallTo(() => cart.Products).Returns(new [] { new ProductToPurchase { ProductId = 1, Quantity = 1 }, new ProductToPurchase { ProductId = 42, Quantity = 7 }, }); IProductCatalog mockProductCatalog = A.Fake <IProductCatalog>(); A.CallTo(() => mockProductCatalog.LookupPrice(1)).Returns(1m); A.CallTo(() => mockProductCatalog.LookupPrice(42)).Returns(1.5m); ITaxCalculator mockTaxCalculator = A.Fake <ITaxCalculator>(); A.CallTo(() => mockTaxCalculator.CalculateTaxes(11.5m)).Returns(1.15m); // Act var calculator = new PricingCalculator(mockProductCatalog, mockTaxCalculator); PricingSummary price = calculator.PriceCart(cart); // Assert Assert.That(price.ProductPrices.Count, Is.EqualTo(2)); Assert.That(price.SubTotal, Is.EqualTo(11.5m)); Assert.That(price.Taxes, Is.EqualTo(1.15m)); Assert.That(price.Total, Is.EqualTo(12.65m)); }
public void Setup() { var pricingRules = new List <IPriceRule> { new EachPriceRule(), new WeightPriceRule() }; var pricingCalculator = new PricingCalculator(pricingRules); _cart = new CartService(pricingCalculator); }
public void PricingCalculator_Calculate_Args_Null_Items() { // ARRANGE var calculator = new PricingCalculator(); // ACT Exception ex = Assert.Throws <ArgumentNullException>( () => calculator.Calculate(null)); // ASSERT Assert.Equal("Value cannot be null. (Parameter 'items')", ex.Message); }
public void CalculatePricing_When_No_Promotions() { // ARRANGE var cart = TestData.Cart1; var calculator = new PricingCalculator(); // ACT var result = calculator.Calculate(cart); // ASSERT Assert.Equal(24.77M, result.TotalPrice); Assert.Equal(0M, result.TotalDiscount); Assert.Equal(result.TotalPrice, result.TotalPriceToPay); }
public void CalculatePricing_With_BuyALotGetADiscount_Promotion() { // ARRANGE var cart = TestData.Cart1; var calculator = new PricingCalculator(); // ACT var result = calculator.Calculate( cart, new BuyALotGetADiscountPromotion(3, 2) // buy at least 3 items and get 2% of discount ); // ASSERT Assert.Equal(24.77M, result.TotalPrice); Assert.Equal(0.4954M, result.TotalDiscount); Assert.Equal(result.TotalPriceToPay, result.TotalPrice - result.TotalDiscount); }
public void CalculatePricing_With_Buy3GetOneFree_Promotion() { // ARRANGE var cart = TestData.Cart1; var calculator = new PricingCalculator(); // ACT var result = calculator.Calculate( cart, new BuyManyGetSomeFreePromotion(3, 1, "kg", new Guid(TestData.ApplesSku)) // get 1kg of apples free for each 3kg (buy 3 get 1 free) ); // ASSERT Assert.Equal(24.77M, result.TotalPrice); Assert.Equal(1.55M, result.TotalDiscount); Assert.Equal(result.TotalPriceToPay, result.TotalPrice - result.TotalDiscount); }
public void CalculatePricing_With_Two_Promotions() { // ARRANGE var cart = TestData.Cart1; var calculator = new PricingCalculator(); // ACT var result = calculator.Calculate( cart, new BuyManyGetSomeFreePromotion(3, 1, "kg", new Guid(TestData.ApplesSku)), // get 1kg of apples free for each 3kg (buy 3 get 1 free) new BuyALotGetADiscountPromotion(3, 2) // buy at least 3 items and get 2% of discount ); // ASSERT Assert.Equal(24.77M, result.TotalPrice); Assert.Equal(2.0454M, result.TotalDiscount); Assert.Equal(result.TotalPriceToPay, result.TotalPrice - result.TotalDiscount); }
public void MissingPrice2() { var cart = new Cart(); cart.IncludeProduct(1, 1); cart.IncludeProduct(42, 7); var catalog = new ProductCatalog(); catalog.SetPrice(1, 1m); var taxCalculator = new PercentageTaxCalculatorStub(0.1m); var calculator = new PricingCalculator(catalog, taxCalculator); PricingSummary price = calculator.PriceCart2(cart); Assert.That(price.ProductPrices.Count, Is.EqualTo(1)); Assert.That(price.SubTotal, Is.EqualTo(1m)); Assert.That(price.Taxes, Is.EqualTo(0.1m)); Assert.That(price.Total, Is.EqualTo(1.1m)); }
public void Setup() { pricingCalculator = new PricingCalculator(); }