private static ProductPricingMethod GetPricingMethod(PriceLoadingMethod priceLoadingMethod,
                                                      DiscountOnPrices discountOnPrices, ApplyCustomerTax applyCustomerTax)
 {
     return(new ProductPricingMethodBuilder().WithPriceLoadingMethod(priceLoadingMethod)
            .CalculateTaxOnRow()
            .WithDiscountOnPrices(discountOnPrices)
            .WithCustomerTaxApplication(applyCustomerTax)
            .Build());
 }
        private void DiscountApplicationOnPriceIsCorrectForSingleRowPriced(double basePrice,
                                                                           PriceLoadingMethod priceLoadingMethod, DiscountOnPrices discountOnPrices,
                                                                           ApplyCustomerTax applyCustomerTax, double expected)
        {
            var pricingMethod =
                new ProductPricingMethodBuilder()
                .WithPriceLoadingMethod(priceLoadingMethod)
                .CalculateTaxOnRow()
                .WithDiscountOnPrices(discountOnPrices)
                .WithCustomerTaxApplication(applyCustomerTax)
                .Build();
            var productVariant =
                new ProductVariantBuilder().WithBasePrice(Convert.ToDecimal(basePrice))
                .WithTaxPercentage(TaxPercentage)
                .Build();
            var cartItemData = new CartItemBuilder().WithItem(productVariant).WithDiscountAmount(1).Build();

            pricingMethod.GetPrice(cartItemData).Should().Be(Convert.ToDecimal(expected));
        }
Пример #3
0
        private void DiscountApplicationOnPriceIsCorrectForIndividuallyPriced(double basePrice,
                                                                              PriceLoadingMethod priceLoadingMethod, DiscountOnPrices discountOnPrices,
                                                                              ApplyCustomerTax applyCustomerTax, double expected)
        {
            var pricingMethod =
                new ProductPricingMethodBuilder()
                .WithPriceLoadingMethod(priceLoadingMethod)
                .CalculateTaxOnIndividualItem()
                .WithDiscountOnPrices(discountOnPrices)
                .WithCustomerTaxApplication(applyCustomerTax)
                .Build();
            var productVariant =
                new ProductVariantBuilder().WithBasePrice(Convert.ToDecimal(basePrice))
                .WithTaxPercentage(TaxPercentage)
                .Build();
            var cartItemData = new CartItemBuilder().WithItem(productVariant).WithDiscountPercentage(10).Build();

            //check for various quantities - should be fine with individual item pricing to just multiply up
            for (int quantity = 1; quantity <= 10; quantity++)
            {
                cartItemData.Quantity = quantity;
                pricingMethod.GetPrice(cartItemData).Should().Be(Convert.ToDecimal(expected * quantity));
            }
        }
        private void DiscountApplicationOnPriceIsCorrectForRowPriced(decimal basePrice,
                                                                     PriceLoadingMethod priceLoadingMethod, DiscountOnPrices discountOnPrices,
                                                                     ApplyCustomerTax applyCustomerTax, double expected)
        {
            var pricingMethod =
                GetPricingMethod(priceLoadingMethod, discountOnPrices, applyCustomerTax);
            var cartItemData = GetCartItemData(basePrice);

            //check for various quantities - should be fine with individual item pricing to just multiply up
            for (var quantity = 1; quantity <= 10; quantity++)
            {
                cartItemData.Quantity = quantity;
                pricingMethod.GetPrice(cartItemData).Should().Be(Convert.ToDecimal(expected * quantity));
            }
        }
 public ProductPricingMethodBuilder WithDiscountOnPrices(DiscountOnPrices discountOnPrices)
 {
     _discountOnPrices = discountOnPrices;
     return(this);
 }
Пример #6
0
        private void DiscountApplicationOnPriceIsCorrectForRowPriced(decimal basePrice, int quantity,
                                                                     PriceLoadingMethod priceLoadingMethod, DiscountOnPrices discountOnPrices,
                                                                     ApplyCustomerTax applyCustomerTax, double expected)
        {
            var pricingMethod =
                GetPricingMethod(priceLoadingMethod, discountOnPrices, applyCustomerTax);
            var cartItemData = GetCartItemData(basePrice, quantity);

            pricingMethod.GetPrice(cartItemData).Should().Be(Convert.ToDecimal(expected));
        }