public void TestCalculationOfRentalPrice() { ICostCalculator calculator = new CostCalculator(); var price = calculator.CalculateCosts(new DateTime(2019, 2, 14, 8, 15, 0), new DateTime(2019, 2, 14, 10, 30, 0), 3, 5); Assert.Equal(13, price); price = calculator.CalculateCosts(new DateTime(2018, 2, 14, 8, 15, 0), new DateTime(2018, 2, 14, 8, 45, 0), 3, 100); Assert.Equal(3, price); price = calculator.CalculateCosts(new DateTime(2018, 2, 14, 8, 15, 0), new DateTime(2018, 2, 14, 8, 25, 0), 20, 100); Assert.Equal(0, price); Assert.Throws <InvalidOperationException>(() => calculator.CalculateCosts(new DateTime(2019, 2, 14, 10, 30, 0), new DateTime(2018, 2, 14, 10, 30, 0), 3, 5)); }
public void CheckCalculateCalculateCostsCalculatesCorrectly(int buttersQty, int milksQty, int breadsQty, decimal finalCost) { // Arrange IPromoRepository promoRepository = new PromoRepository(); IProductRepository productRepository = new ProductRepository(); List <IPromo> testPromosList = new List <IPromo>() { promoRepository.GetPromoOne(), promoRepository.GetPromoTwo() }; List <IProduct> testProductsList = productRepository.GetProducts(buttersQty, milksQty, breadsQty); IGroceriesBasket basket = new GroceriesBasket(); basket.AddProducts(testProductsList); ICostCalculator costCalculator = new CostCalculator(basket, testPromosList); // Act costCalculator.CalculateCosts(); // Assert that all the involved Costs are as they should be Assert.Equal(testProductsList.Sum(product => product.Price), costCalculator.TotalCost); // Total Cost of the Items Assert.Equal(testPromosList.Sum(promo => promo.CalculateDeduction(testProductsList)), costCalculator.PromosDeductions); // Total Deductions from the applied Promos Assert.Equal(finalCost, costCalculator.FinalCost); // Final Cost }