public void CalculateDiscount_MultiplePolicies_DiscountCalculated() { //Arrange var category = Builder <CategoryMock> .CreateNew().Build(); var policies = Builder <SalePolicy> .CreateListOfSize(10) .All() .WithFactory(index => new SalePolicy(++index, 10 * index)) .Build(); var sale = new Sale(category, "Sale", policies); var product = Builder <Product> .CreateNew() .Do(p => { p.Category = category; p.Price = 10; }) .Build(); //Act var actual = sale.CalculateDiscount(product, 7); //Assert Assert.Equal(0.7m, actual.Value); }
public void CalculateDiscount_ProductIneligible_NoDiscount() { //Arrange var category = Builder <CategoryMock> .CreateNew().Build(); var policies = new SalePolicy(10, 10); var sale = new Sale(category, "Sale", new SalePolicy[] { policies }); var product = Builder <Product> .CreateNew() .Do(p => { p.Category = category; p.Price = 10; }) .Build(); //Act var actual = sale.CalculateDiscount(product, 9); //Assert Assert.Equal(0m, actual.Value); }
internal decimal CalcularteDiscountPercent(Sale sale, Product product, int units) => sale?.CalculateDiscount(product, units).ValuePercent ?? 0;