public void CanAddIfExistOtherInSamePeriodSameUnits() { var sku = new Sku(_testSkuName); sku.AddSkuOfferPrice(_testMinNumberUnits1, _testPricePerUnit, _testOfferStart1); Assert.Throws <OverlapOfferException>(() => sku.AddSkuOfferPrice(_testMinNumberUnits1, _testPricePerUnit, _testOfferStart3)); }
public void AddIfExistOtherInDifferentPeriodSameUnits() { var sku = new Sku(_testSkuName); sku.AddSkuOfferPrice(_testMinNumberUnits1, _testPricePerUnit, _testOfferStart1); sku.AddSkuOfferPrice(_testMinNumberUnits1, _testPricePerUnit, _testOfferStart2, _testOfferEnd2); Assert.Equal(2, sku.SkuPrices.Count()); }
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 AddIfNotExistInSamePeriod() { var sku = new Sku(_testSkuName); sku.AddSkuOfferPrice(_testMinNumberUnits1, _testPricePerUnit, _testOfferStart1); var firstSkuPrice = sku.SkuPrices.Single(); Assert.Equal(firstSkuPrice.OfferStart, _testOfferStart1); }
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 void CanCalculateNegativeNumberOfUnits() { var sku = new Sku(_testSkuName); Assert.Throws <ArgumentException>(() => sku.AddSkuOfferPrice(_testNegativeNumberUnits, _testPricePerUnit, _testOfferStart1)); }