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); }
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); }