public void Setup()
        {
            IOC.UnitTest();
            _contentServiceMock     = new IOCBuilder <IContentService>().SetupNewMock();        //  IOC.ContentService.SetupNewMock();
            _mockContentTypeService = new IOCBuilder <IContentTypeService>().SetupNewMock();    //IOC.ContentTypeService.SetupNewMock();

            var productInfo = DefaultFactoriesAndSharedFunctionality.CreateProductInfo(995, 1);

            productInfo.DocTypeAlias = "uwbsProductCustom";
            productInfo.Title        = "Nikes";
            _orderInfo             = DefaultFactoriesAndSharedFunctionality.CreateOrderInfo(productInfo);
            _orderInfo.OrderNumber = "2013001";
            var contentType = new ContentType(1)
            {
                Id = 1234
            };

            _mockContentTypeService.Setup(m => m.GetContentType(Order.OrderRepositoryNodeAlias)).Returns(contentType);
            _contentServiceMock.Setup(m => m.GetContentOfContentType(1234)).Returns(new List <IContent> {
                new Content("", 1, contentType)
            });
            _contentServiceMock.Setup(m => m.GetChildren(It.IsAny <int>())).Returns(new List <IContent>());
            _contentServiceMock.Setup(m => m.CreateContent("2013001", It.IsAny <IContent>(), It.IsAny <string>(), It.IsAny <int>())).Returns(new Content("2013001", 1, contentType));
            _contentServiceMock.Setup(m => m.CreateContent("Nikes", It.IsAny <IContent>(), It.IsAny <string>(), It.IsAny <int>())).Returns(new Content("Nikes", 1, contentType));
        }
Beispiel #2
0
        public void DiscountAmountRegressionTest20140408()
        {
            IOC.IntegrationTest();
            var product1 = DefaultFactoriesAndSharedFunctionality.CreateProductInfo(400, 10);
            var order    = DefaultFactoriesAndSharedFunctionality.CreateIncompleteOrderInfo(product1);

            var discount = DefaultFactoriesAndSharedFunctionality.CreateDefaultOrderDiscountWithAmount(10, DiscountOrderCondition.OnTheXthItem, 2);

            //IOC.OrderDiscountRepository.SetupFake(discount.ToDiscountOrder());
            DefaultFactoriesAndSharedFunctionality.SetDiscountsOnOrderInfo(order, discount);

            var basket     = new BasketOrderInfoAdaptor(order);
            var basketLine = basket.OrderLines.Single();

            Console.WriteLine(basketLine.Amount.Discount.WithVat.ToCurrencyString());
            Console.WriteLine(basketLine.Amount.BeforeDiscount.WithVat.ToCurrencyString());
            Console.WriteLine(basketLine.Amount.WithVat.ToCurrencyString());

            var line = order.OrderLines.First();

            Console.WriteLine(line.Amount.Discount.WithVat.ToCurrencyString());
            Console.WriteLine(line.Amount.BeforeDiscount.WithVat.ToCurrencyString());
            Console.WriteLine(line.Amount.WithVat.ToCurrencyString());

            Assert.AreEqual(50, basketLine.Amount.Discount.WithVat.ValueInCents);
            Assert.AreEqual(4000, basketLine.Amount.BeforeDiscount.WithVat.ValueInCents);
            Assert.AreEqual(3950, basketLine.Amount.WithVat.ValueInCents);

            Assert.AreEqual(50, line.Amount.Discount.WithVat.ValueInCents);
            Assert.AreEqual(4000, line.Amount.BeforeDiscount.WithVat.ValueInCents);
            Assert.AreEqual(3950, line.Amount.WithVat.ValueInCents);
        }
        public void MultipleAssertsIncludingVat()
        {
            IOC.SettingsService.InclVat();
            var productInfo1 = DefaultFactoriesAndSharedFunctionality.CreateProductInfo(1100, 1, 10);
            var productInfo2 = DefaultFactoriesAndSharedFunctionality.CreateProductInfo(3850, 1, 10);
            var orderInfo    = DefaultFactoriesAndSharedFunctionality.CreateIncompleteOrderInfo(productInfo1, productInfo2);
            var discount     = DefaultFactoriesAndSharedFunctionality.CreateDefaultOrderDiscountWithPercentage(50);

            DefaultFactoriesAndSharedFunctionality.SetDiscountsOnOrderInfo(orderInfo, discount);

            Assert.NotNull(discount.Localization);

            var d = orderInfo.DiscountAmountInCents;

            var summedParts = orderInfo.OrderLines.Sum(l => l.GetAmount(false, true, true));

            Assert.AreEqual((1000 + 3500), summedParts);

            summedParts = orderInfo.OrderDiscountEffects.GetDiscountedPrice(summedParts, summedParts);             // todo: add inclVat
            Assert.AreEqual((1000 + 3500) / 2, summedParts);


            Assert.AreEqual(2250, orderInfo.DiscountAmountWithoutVatInCents);
            Assert.AreEqual(4950, orderInfo.OrderLines.Sum(orderline => orderline.AmountInCents));

            Assert.AreEqual(50 + 175, orderInfo.TotalVatInCents);
            Assert.AreEqual(2475, orderInfo.OrderTotalInCents);
            Assert.AreEqual(2250, orderInfo.SubtotalInCents);
            Assert.AreEqual(2250 + 225, orderInfo.GrandtotalInCents);
            Assert.AreEqual(50 + 175, orderInfo.TotalVatInCents);
        }
Beispiel #4
0
        public void GrandTotalWithOrderDiscoun214t()
        {
            IOC.OrderService.Actual();

            var productInfo = new ProductInfo {
                Id = 1234, IsDiscounted = false, Vat = 0, OriginalPriceInCents = 1000, Ranges = new List <Range>()
            };

            IOC.CMSEntityRepository.SetupNewMock().Setup(m => m.GetByGlobalId(1234)).Returns(new UwbsNode {
                Id = 1234, NodeTypeAlias = Product.NodeAlias
            });

            var orderInfo = DefaultFactoriesAndSharedFunctionality.CreateIncompleteOrderInfo(productInfo);
            var discount  = DefaultFactoriesAndSharedFunctionality.CreateDefaultOrderDiscountWithAmount(10, DiscountOrderCondition.None, 0);

            discount.AffectedOrderlines = new List <int> {
                1234
            };
            DefaultFactoriesAndSharedFunctionality.SetDiscountsOnOrderInfo(orderInfo, discount);

            Assert.AreEqual(10, orderInfo.DiscountAmountInCents);

            Assert.AreEqual(990, orderInfo.GrandtotalInCents);
            Assert.AreEqual(990, orderInfo.OrderTotalInCents);
            Assert.AreEqual(0, orderInfo.AverageOrderVatPercentage);
            Assert.AreEqual(990, orderInfo.SubtotalInCents);
        }
        public void OrderWithManyItemsHadRelativelyLargeDeviationWhenCalculatingVatOverPartsInsteadOfOverTotal()
        {
            IOC.IntegrationTest();
            IOC.SettingsService.InclVat();
            IOC.VatCalculationStrategy.OverTotal();

            var productInfo1 = DefaultFactoriesAndSharedFunctionality.CreateProductInfo(7500, 2, 21m);
            var productInfo2 = DefaultFactoriesAndSharedFunctionality.CreateProductInfo(200, 25, 21m);
            var productInfo3 = DefaultFactoriesAndSharedFunctionality.CreateProductInfo(200, 50, 21m);
            var productInfo4 = DefaultFactoriesAndSharedFunctionality.CreateProductInfo(200, 50, 21m);
            var productInfo5 = DefaultFactoriesAndSharedFunctionality.CreateProductInfo(200, 25, 21m);
            var order        = DefaultFactoriesAndSharedFunctionality.CreateIncompleteOrderInfo(productInfo1, productInfo2, productInfo3, productInfo4, productInfo5);

            var directlyCalculatedVat = VatCalculator.VatAmountFromWithVat(45000, 21m);

            Assert.AreEqual(7810, directlyCalculatedVat);

            Assert.AreEqual(7810, order.VatTotalInCents);

            Assert.AreEqual(45000, order.GrandtotalInCents);

            Assert.AreEqual(45000 - 7810, order.SubtotalInCents);

            Console.WriteLine(directlyCalculatedVat);
            Console.WriteLine(order.VatTotalInCents);
            Console.WriteLine(order.GrandtotalInCents);


            // todo: this might be a concern:
            // var orderNewDiscount = order.DiscountAmountWithVatInCents;
            // Assert.AreEqual(x, orderNewDiscount); where x should not be 0 but orderNewDiscount is 0
        }
Beispiel #6
0
        public void PercentageDiscountExncludingVat()
        {
            IOC.IntegrationTest();
            IOC.SettingsService.ExclVat();
            var productInfo = DefaultFactoriesAndSharedFunctionality.CreateProductInfo(1000, 1, 10);
            var order       = DefaultFactoriesAndSharedFunctionality.CreateIncompleteOrderInfo(productInfo);
            var discount    = DefaultFactoriesAndSharedFunctionality.CreateDefaultOrderDiscountWithPercentage(50);

            IOC.OrderDiscountRepository.SetupFake(discount);
            order.OrderDiscountsFactory = () => IO.Container.Resolve <IOrderDiscountService>().GetApplicableDiscountsForOrder(order, order.Localization).ToList();
            order.ResetDiscounts();

            Assert.AreEqual(1100, order.GetAmount(true, false, true));
            Assert.AreEqual(1000, order.GetAmount(false, false, true));
            Assert.AreEqual(550, order.GetAmount(true, true, true));
            Assert.AreEqual(500, order.GetAmount(false, true, true));

            var price = new SimplePrice(order, order.Localization);

            Assert.AreEqual(1100, price.BeforeDiscount.WithVat.ValueInCents);
            Assert.AreEqual(1000, price.BeforeDiscount.WithoutVat.ValueInCents);
            Assert.AreEqual(100, price.BeforeDiscount.Vat.ValueInCents);
            Assert.AreEqual(550, price.WithVat.ValueInCents);
            Assert.AreEqual(500, price.WithoutVat.ValueInCents);
            Assert.AreEqual(50, price.Vat.ValueInCents);

            Assert.AreEqual(550, price.Discount.WithVat.ValueInCents);
            Assert.AreEqual(500, price.Discount.WithoutVat.ValueInCents);
        }
Beispiel #7
0
        public void SomeRegressionTest()
        {
            var productInfo = new ProductInfo {
                IsDiscounted = false, Vat = 6, OriginalPriceInCents = 1000, Ranges = new List <Range>()
            };

            productInfo.ProductVariants.Add(new ProductVariantInfo {
                PriceInCents = -100
            });

            var orderInfo = DefaultFactoriesAndSharedFunctionality.CreateIncompleteOrderInfo(productInfo);
            var discount  = DefaultFactoriesAndSharedFunctionality.CreateDefaultOrderDiscountWithPercentage(50);

            DefaultFactoriesAndSharedFunctionality.SetDiscountsOnOrderInfo(orderInfo, discount);

            var line         = orderInfo.OrderLines.Single();
            var sellableUnit = orderInfo.OrderLines.Single().SellableUnits.Single();

            Assert.AreEqual(900, sellableUnit.PriceInCents);
            Assert.AreEqual(51, line.VatAmountInCents);
            Assert.AreEqual(849, line.SubTotalInCents);

            Assert.AreEqual(425, orderInfo.SubtotalInCents);

            Assert.AreEqual(450, orderInfo.OrderTotalInCents);
            Assert.AreEqual(6, orderInfo.AverageOrderVatPercentage);
            Assert.AreEqual(450, orderInfo.GrandtotalInCents);

            Assert.AreEqual(900, orderInfo.OrderLines.First().GrandTotalInCents);
            Assert.AreEqual(900, productInfo.PriceWithVatInCents);
        }
Beispiel #8
0
        public void UpdatingAnOrderlineShouldBeReflectedInAmount()
        {
            IOC.UnitTest();
            var orderUpdateService = IOC.OrderUpdatingService.Actual().Resolve();

            var productInfo = DefaultFactoriesAndSharedFunctionality.CreateProductInfo(1000, 1);

            productInfo.Id  = 5678;
            productInfo.Vat = 10;
            var order = DefaultFactoriesAndSharedFunctionality.CreateIncompleteOrderInfo(productInfo);
            var line  = order.OrderLines.Single();

            Assert.AreEqual(1000, order.GetAmount(true, false, false));
            Assert.AreEqual(1000, line.GetAmount(true, false, false));
            Assert.AreEqual(909, order.GetAmount(false, false, false));

            var basket = Basket.CreateBasketFromOrderInfo(order);

            Assert.AreEqual(1000, basket.ChargedOrderAmount.ValueInCents);

            orderUpdateService.AddOrUpdateOrderLine(order, 0, 5678, "update", 2, new int[0]);

            Assert.AreEqual(1, order.OrderLines.Count);
            Assert.AreEqual(2, productInfo.Quantity);

            Assert.AreEqual(2, line.SellableUnits.Count());

            Assert.AreEqual(2000, line.GetAmount(true, false, false));
            Assert.AreEqual(2000, order.GetAmount(true, false, false));

            basket = Basket.CreateBasketFromOrderInfo(order);
            Assert.AreEqual(2000, basket.ChargedOrderAmount.ValueInCents);
        }
        public void SingleLineTwoProductsShouldGiveEqual()
        {
            var productInfo = DefaultFactoriesAndSharedFunctionality.CreateProductInfo(1000, 2, 19);
            var orderInfo   = DefaultFactoriesAndSharedFunctionality.CreateOrderInfo(productInfo);

            Assert.AreEqual(19, orderInfo.AverageOrderVatPercentage);
        }
        public void OrderWithTwoLinesAndDiscount_ShouldGiveVatAmountOfProductMinusOrderDiscount(bool includingVat, decimal vat, int numberOfItemsInOrderLine)
        {
            if (includingVat)
            {
                IOC.SettingsService.InclVat();
            }
            else
            {
                IOC.SettingsService.ExclVat();
            }
            var productInfo1 = DefaultFactoriesAndSharedFunctionality.CreateProductInfo(1000, numberOfItemsInOrderLine, vat);
            var productInfo2 = DefaultFactoriesAndSharedFunctionality.CreateProductInfo(3500, numberOfItemsInOrderLine, vat);
            var orderInfo    = DefaultFactoriesAndSharedFunctionality.CreateIncompleteOrderInfo(productInfo1, productInfo2);
            var line1        = orderInfo.OrderLines.First();
            var line2        = orderInfo.OrderLines.Skip(1).First();
            var discount     = DefaultFactoriesAndSharedFunctionality.CreateDefaultOrderDiscountWithPercentage(50);

            DefaultFactoriesAndSharedFunctionality.SetDiscountsOnOrderInfo(orderInfo, discount);

            var totalOrderDiscount = includingVat ? orderInfo.DiscountAmountWithVatInCents : orderInfo.DiscountAmountWithoutVatInCents;

            Assert.AreEqual(includingVat, orderInfo.PricesAreIncludingVAT);
            Assert.AreEqual(vat, line1.Vat);

            Assert.AreEqual(2250 * numberOfItemsInOrderLine, totalOrderDiscount);
            var expected = includingVat || vat < 1 ? 4500 : 4950;

            Assert.AreEqual(expected * numberOfItemsInOrderLine, line1.Amount.WithVat.ValueInCents + line2.Amount.WithVat.ValueInCents);
        }
        public void CombinedTooLargeAmountAndPercentage()
        {
            var orderInfo = DefaultFactoriesAndSharedFunctionality.CreateIncompleteOrderInfo(DefaultFactoriesAndSharedFunctionality.CreateProductInfo(1000, 1));

            DefaultFactoriesAndSharedFunctionality.SetDiscountsOnOrderInfo(orderInfo, DefaultFactoriesAndSharedFunctionality.CreateDefaultOrderDiscountWithAmount(1234, DiscountOrderCondition.None, 0), DefaultFactoriesAndSharedFunctionality.CreateDefaultOrderDiscountWithPercentage(50));
            Assert.AreEqual(1000, orderInfo.DiscountAmountInCents);
        }
Beispiel #12
0
        public void TestAddOrUpdateOrderLine()
        {
            IOC.UnitTest();

            var productDiscount = DefaultFactoriesAndSharedFunctionality.CreateProductDiscountPercentage(36);

            productDiscount.RangesString = new List <Range> {
                new Range {
                    From = 1, To = 20, PriceInCents = 10000
                }
            }.ToRangesString();
            var product = DefaultFactoriesAndSharedFunctionality.CreateProductInfo(5000, 5, productDiscount);
            var order   = DefaultFactoriesAndSharedFunctionality.CreateIncompleteOrderInfo(product);

            Assert.IsTrue(productDiscount.Ranges.Any());
            Assert.AreEqual(10000, productDiscount.RangedDiscountValue(15));
            Assert.AreEqual(100, product.DiscountPercentage);

            Assert.AreEqual(0, order.OrderLineTotalInCents);

            IOC.ProductService.SetupNewMock().Setup(m => m.GetById(1234, It.IsAny <ILocalization>(), It.IsAny <bool>())).Returns(new Product {
                Id = 1234, UseVariantStock = true
            });

            var orderUpdatingService = IOC.OrderUpdatingService.Actual().Resolve();

            // todo: actually make the update productinfo functionality testable..
            //orderUpdatingService.AddOrUpdateOrderLine(order, 0, 1234, "update", 15, new List<int>());
        }
Beispiel #13
0
        public void BasicTests()
        {
            IOC.UnitTest();
            IOC.SettingsService.ExclVat();

            var productInfo = DefaultFactoriesAndSharedFunctionality.CreateProductInfo(1000, 1);

            productInfo.Id  = 5678;
            productInfo.Vat = 10;
            var order = DefaultFactoriesAndSharedFunctionality.CreateIncompleteOrderInfo(productInfo);
            var line  = order.OrderLines.Single();

            Assert.AreEqual(1000, order.GetAmount(false, false, false));
            Assert.AreEqual(1000, line.GetAmount(false, false, false));
            Assert.AreEqual(1100, order.GetAmount(true, false, false));
            Assert.AreEqual(1100, line.GetAmount(true, false, false));

            Assert.AreEqual(1100, order.ChargedAmountInCents);
            Assert.AreEqual(1100, order.GrandtotalInCents);
            Assert.AreEqual(1000, order.SubtotalInCents);

            var basket = Basket.CreateBasketFromOrderInfo(order);

            Assert.AreEqual(1100, basket.ChargedOrderAmount.ValueInCents);
        }
        public void OrderWithOneLine_ShouldGiveVatAmountOfProduct(bool includingVat, decimal vat, int numberOfItemsInOrderLine)
        {
            IOC.SettingsService.ExclVat();
            var productInfo = DefaultFactoriesAndSharedFunctionality.CreateProductInfo(1000, numberOfItemsInOrderLine, vat);
            var orderInfo   = DefaultFactoriesAndSharedFunctionality.CreateOrderInfo(productInfo);

            Assert.AreEqual(productInfo.VatAmountInCents * numberOfItemsInOrderLine, orderInfo.TotalVatInCents);
        }
Beispiel #15
0
 public ProductInfo CreateProductInfoByProductId(int productId, OrderInfo order, ILocalization localization, int itemCount)
 {
     if (productId == ProductId1)
     {
         return(DefaultFactoriesAndSharedFunctionality.CreateProductInfo(995, 1));
     }
     return(null);
 }
        public void TestSerialization()
        {
            var orderInfo = DefaultFactoriesAndSharedFunctionality.CreateOrderInfo(DefaultFactoriesAndSharedFunctionality.CreateProductInfo(1995, 2));

            orderInfo.ShippingProviderAmountInCents = 650;
            Assert.NotNull(orderInfo.ChargedShippingCosts);
            Console.WriteLine(DomainHelper.SerializeObjectToXmlString(orderInfo));
        }
        public void Setup()
        {
            IOC.IntegrationTest();

            _orderInfo = DefaultFactoriesAndSharedFunctionality.CreateIncompleteOrderInfo(DefaultFactoriesAndSharedFunctionality.CreateProductInfo(1000, 1));

            _orderDiscount = DefaultFactoriesAndSharedFunctionality.CreateDefaultOrderDiscountWithAmount(195, DiscountOrderCondition.None, 0);
        }
        public void TwoLinesThreeProductsDifferentVatShouldGiveWeightedAverageWithVatExempt()
        {
            var productInfo  = DefaultFactoriesAndSharedFunctionality.CreateProductInfo(1000, 2, 19);
            var productInfo2 = DefaultFactoriesAndSharedFunctionality.CreateProductInfo(1000, 1, 0);
            var orderInfo    = DefaultFactoriesAndSharedFunctionality.CreateOrderInfo(productInfo, productInfo2);

            Assert.AreEqual((2m * 19) / 3, orderInfo.AverageOrderVatPercentage);
        }
        public void TwoLinesTwoProductsDifferentVatShouldGiveAverage()
        {
            var productInfo  = DefaultFactoriesAndSharedFunctionality.CreateProductInfo(100000, 10, 19);
            var productInfo2 = DefaultFactoriesAndSharedFunctionality.CreateProductInfo(100000, 10, 6);
            var orderInfo    = DefaultFactoriesAndSharedFunctionality.CreateOrderInfo(productInfo, productInfo2);

            Assert.AreEqual(12.5, orderInfo.AverageOrderVatPercentage);
        }
        public void Setup()
        {
            IOC.UnitTest();
            _discountCalculationService = IOC.DiscountCalculationService.Actual().Resolve();

            _product      = DefaultFactoriesAndSharedFunctionality.CreateProductInfo(1000, 1);
            _product.Tags = new [] { "schoen" };
            _order        = DefaultFactoriesAndSharedFunctionality.CreateIncompleteOrderInfo(_product);
        }
Beispiel #21
0
        public void ShippingProviderShouldNotBeApplicableWhenEndRangeEqualsOrderlinesAmount_WhenExcludingVat()
        {
            IOC.SettingsService.ExclVat();
            var productInfo = DefaultFactoriesAndSharedFunctionality.CreateProductInfo(1000, 1);
            var orderInfo   = DefaultFactoriesAndSharedFunctionality.CreateOrderInfo(productInfo);
            var provider    = DefaultFactoriesAndSharedFunctionality.CreateShippingProvider(0, 1000, ShippingRangeType.OrderAmount);

            Assert.IsFalse(provider.IsApplicableToOrder(orderInfo));
        }
        public void OrderHavingAConfirmDate_ShouldRenderOrderDate()
        {
            var orderInfo = DefaultFactoriesAndSharedFunctionality.CreateOrderInfo();

            orderInfo.ConfirmDate = DateTime.Now;
            var xml = DomainHelper.SerializeObjectToXmlString(orderInfo);

            Assert.That(xml.Contains("<OrderDate>"));
            Assert.Greater(xml.IndexOf("</OrderDate>") - xml.IndexOf("<OrderDate>"), 11);
        }
        public void DiscountAmountForOrder_TagsNotMatching_GivesZeroDiscount()
        {
            var discount = DefaultFactoriesAndSharedFunctionality.CreateDefaultOrderDiscountWithPercentage(50);

            discount.AffectedProductTags = new[] { "jas" };

            var amount = _discountCalculationService.DiscountAmountForOrder(discount, _order);

            Assert.AreEqual(0, amount);
        }
Beispiel #24
0
        public void OrderInfoWithApplicableDiscount_ShouldReturnInformationOnThatDiscount()
        {
            var product   = DefaultFactoriesAndSharedFunctionality.CreateProductInfo(1000, 1);
            var orderInfo = DefaultFactoriesAndSharedFunctionality.CreateIncompleteOrderInfo(product);
            var discount  = DefaultFactoriesAndSharedFunctionality.CreateDefaultOrderDiscountWithPercentage(10);

            IOC.OrderDiscountRepository.SetupFake(new IOrderDiscount[] { discount.ToDiscountOrder() });

            Assert.AreEqual(1, orderInfo.AppliedDiscountsInformation.Count);
        }
Beispiel #25
0
        public void DiscountAmountForOrderOnOrderWithTwoOrderLinesAndApplicableNewPriceDiscountWithOnTheXthItemCondition_ShouldGiveCheapestProductPriceTotalMinusTheDiscountAmount()
        {
            var orderInfo = DefaultFactoriesAndSharedFunctionality.CreateOrderInfo(DefaultFactoriesAndSharedFunctionality.CreateProductInfo(1995, 1), DefaultFactoriesAndSharedFunctionality.CreateProductInfo(1899, 1));
            var discount  = DefaultFactoriesAndSharedFunctionality.CreateDefaultOrderDiscountWithNewPrice(1000, DiscountOrderCondition.OnTheXthItem, 2);

            DefaultFactoriesAndSharedFunctionality.SetDiscountsOnOrderInfo(orderInfo, discount);

            var actual = _discountCalculationService.DiscountAmountForOrder(discount, orderInfo);

            Assert.AreEqual(1899 - 1000, actual);
        }
Beispiel #26
0
        public void DiscountAmountForOrderOnOrderWithTwoLinesTwoProductsAndApplicableNewPriceDiscountWithPerSetOfItemsCondition_ShouldGiveOrderLineTotalMinusTwoTimesTheDiscountAmount()
        {
            var orderInfo = DefaultFactoriesAndSharedFunctionality.CreateOrderInfo(DefaultFactoriesAndSharedFunctionality.CreateProductInfo(1995, 2), DefaultFactoriesAndSharedFunctionality.CreateProductInfo(1899, 2));
            var discount  = DefaultFactoriesAndSharedFunctionality.CreateDefaultOrderDiscountWithNewPrice(1000, DiscountOrderCondition.PerSetOfXItems, 2);

            DefaultFactoriesAndSharedFunctionality.SetDiscountsOnOrderInfo(orderInfo, discount);

            var actual = _discountCalculationService.DiscountAmountForOrder(discount, orderInfo);

            Assert.AreEqual(orderInfo.OrderLineTotalInCents - 2000, actual);
        }
Beispiel #27
0
        public void DiscountAmountForOrderOnOrderWithSingleProductAndApplicableNewPriceDiscount_ShouldGiveProductPriceMinusDiscountAmount()
        {
            var orderInfo = DefaultFactoriesAndSharedFunctionality.CreateOrderInfo(DefaultFactoriesAndSharedFunctionality.CreateProductInfo(1995, 1));
            var discount  = DefaultFactoriesAndSharedFunctionality.CreateDefaultOrderDiscountWithNewPrice(1000);

            DefaultFactoriesAndSharedFunctionality.SetDiscountsOnOrderInfo(orderInfo, discount);

            var actual = _discountCalculationService.DiscountAmountForOrder(discount, orderInfo);

            Assert.AreEqual(1995 - 1000, actual);
        }
Beispiel #28
0
        public void Setup()
        {
            IOC.UnitTest();
            _stockServiceMock = IOC.StockService.SetupNewMock();

            var productInfo = DefaultFactoriesAndSharedFunctionality.CreateProductInfo(12990, 1);

            productInfo.Id         = TestProductService.ProductId1;
            _order                 = DefaultFactoriesAndSharedFunctionality.CreateIncompleteOrderInfo(productInfo);
            _order.StoreInfo.Alias = StoreHelper.GetCurrentStore().Alias;
        }
Beispiel #29
0
        public void ThatPercentDiscountIsAppliedToCorrectNumberOfItemsFixedDiscount(int setSize, int itemCount, int expectedNumberOfDiscounts)
        {
            var productInfo = DefaultFactoriesAndSharedFunctionality.CreateProductInfo(1000, itemCount);

            var orderInfo = DefaultFactoriesAndSharedFunctionality.CreateIncompleteOrderInfo(productInfo);
            var discount  = DefaultFactoriesAndSharedFunctionality.CreateDefaultOrderDiscountWithAmount(50, DiscountOrderCondition.PerSetOfXItems, setSize);

            DefaultFactoriesAndSharedFunctionality.SetDiscountsOnOrderInfo(orderInfo, discount);

            Assert.AreEqual(itemCount * 1000 - expectedNumberOfDiscounts * 50, orderInfo.OrderTotalInCents);
        }
        public void PercentageProductDiscountOnProductWithVariant_ShouldGiveDiscountThatTakesVariantEffectIntoAccount()
        {
            IOC.UnitTest();
            var discount    = DefaultFactoriesAndSharedFunctionality.CreateProductDiscountPercentage(50);
            var productInfo = DefaultFactoriesAndSharedFunctionality.CreateProductInfo(1000, 1, discount);
            var variant     = DefaultFactoriesAndSharedFunctionality.CreateProductVariantInfo(-200);

            DefaultFactoriesAndSharedFunctionality.SetVariantsOnProductInfo(productInfo, variant);

            Assert.AreEqual(400, productInfo.PriceInCents);
        }