public void Test_ApplyPromotion_WHEN_PromotionDoesntAppply_THEN_ItIsFailure() { var orderItems = new IOrderItem[] { GetSKUOrderItem(PromotionEngineTestContext.Products.A, 1), GetSKUOrderItem(PromotionEngineTestContext.Products.B, 1), GetSKUOrderItem(PromotionEngineTestContext.Products.C, 1) }; var target = new CombinedSKUFixedPricePromotionTestBuilder() .WithFixedPrice(15) .WithSKUIdCombo(PromotionEngineTestContext.Products.C.ID, PromotionEngineTestContext.Products.D.ID) .Build(); var result = target.ApplyPromotion(orderItems); Assert.IsFalse(result.PromotionWasApplied); }
public void Test_ApplyPromotion_WHEN_PromotionApppliesOnce_THEN_ItAdjustTotalWith5() { var orderItems = new ISKUOrderItem[] { GetSKUOrderItem(PromotionEngineTestContext.Products.C, 1), GetSKUOrderItem(PromotionEngineTestContext.Products.D, 1) }; var target = new CombinedSKUFixedPricePromotionTestBuilder() .WithFixedPrice(30) .WithSKUIdCombo(PromotionEngineTestContext.Products.C.ID, PromotionEngineTestContext.Products.D.ID) .Build(); var result = target.ApplyPromotion(orderItems); Assert.IsTrue(result.PromotionWasApplied); Assert.IsNotNull(result.AdjustmentOrderItem); Assert.AreEqual(-5, result.AdjustmentOrderItem.Amount); Assert.AreEqual(2, result.AppliedToSKUs.Count); Assert.IsTrue(result.AppliedToSKUs.Any(x => x == PromotionEngineTestContext.Products.C)); Assert.IsTrue(result.AppliedToSKUs.Any(x => x == PromotionEngineTestContext.Products.D)); }