public void AddIfExist()
        {
            var sku = new Sku(_testSkuName);

            sku.AddSkuBasePrice(_testPricePerUnit);
            sku.AddSkuBasePrice(_testPricePerUnit2);

            Assert.Single(sku.SkuPrices);
            Assert.Equal(_testPricePerUnit2, sku.SkuPrices.Single().PricePerUnit);
        }
        private static IEnumerable <Sku> GetPreconfiguredSkus()
        {
            var actualDate = DateTime.UtcNow;

            var skuA = new Sku("A");

            skuA.AddSkuBasePrice(50);
            skuA.AddSkuOfferPrice(3, 43.3m, actualDate);

            var skuB = new Sku("B");

            skuB.AddSkuBasePrice(30);
            skuB.AddSkuOfferPrice(2, 22.5m, actualDate);

            var skuC = new Sku("C");

            skuC.AddSkuBasePrice(20);

            var skuD = new Sku("D");

            skuD.AddSkuBasePrice(15);

            return(new List <Sku>()
            {
                skuA, skuB, skuC, skuD
            });
        }
        public void CanCalculateNegativeNumberOfUnits()
        {
            var sku = new Sku(_testSkuName);

            sku.AddSkuBasePrice(_testPricePerUnit1);

            Assert.Throws <ArgumentException>(() => sku.CalculatePrice(_testActualDate, _testNegativeNumberOfUnits));
        }
        public void AddIfNotExist()
        {
            var sku = new Sku(_testSkuName);

            sku.AddSkuBasePrice(_testPricePerUnit);

            var firstSkuPrice = sku.SkuPrices.Single();

            Assert.Equal(_testPricePerUnit, firstSkuPrice.PricePerUnit);
        }
        public void CalculatePriceWithoutOffers()
        {
            var sku = new Sku(_testSkuName);

            sku.AddSkuBasePrice(_testPricePerUnit1);

            var price = sku.CalculatePrice(_testActualDate, 3);

            Assert.Equal(150, price);
        }
        public void CalculatePriceWithDiscountAndOtherWithoutDiscount()
        {
            var sku = new Sku(_testSkuName);

            sku.AddSkuBasePrice(_testPricePerUnit1);
            sku.AddSkuOfferPrice(_testNumberOfUnits2, _testPricePerUnit2, _testActualDate);

            var price = sku.CalculatePrice(_testActualDate, 4);

            Assert.Equal(180, decimal.Round(price));
        }
        public void CalculatePriceWithoutDiscount()
        {
            var sku = new Sku(_testSkuName);

            sku.AddSkuBasePrice(_testPricePerUnit1);
            sku.AddSkuOfferPrice(_testNumberOfUnits2, _testPricePerUnit2, _testActualDate);

            var price = sku.CalculatePrice(_testActualDate, 2);

            Assert.Equal(100, price);
        }
Exemplo n.º 8
0
        public async Task InvokeGetByIdAsync()
        {
            var sku = new Sku(_testSkuName);

            sku.AddSkuBasePrice(It.IsAny <decimal>());
            _mockSkuRepository.Setup(m => m.FirstAsync(It.IsAny <SkuWithPricesSpecification>())).ReturnsAsync(sku);

            var skuService = new SkuService(_mockSkuRepository.Object);
            await skuService.CalculatePrice(DateTime.UtcNow, sku.Id, 1);

            _mockSkuRepository.Verify(m => m.FirstAsync(It.IsAny <SkuWithPricesSpecification>()), Times.Once);
        }