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