Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
 internal decimal CalcularteDiscountPercent(Sale sale, Product product, int units) => sale?.CalculateDiscount(product, units).ValuePercent ?? 0;