private void AddItemConditionalDiscountOnAll(Guid sessionID, string ownerName, Guid storeID, Guid itemID, int duration = LONG_DURATION,
                                                     int minAmount = MIN_AMOUNT, double discount = HALF_OFF)
        {
            LoginSessionSuccess(sessionID, ownerName);
            ItemConditionalDiscount_MinItems_ToDiscountOnAll itemConditional = DeserializeItemConditionalDiscount_discountOnAllSuccess(
                sessionID, storeID, itemID, discount, duration, minAmount);

            Assert.AreEqual(DateTime.Now.Date.AddDays(duration), itemConditional.DateUntil.Date);
            Assert.AreEqual(itemID, itemConditional.ItemID);
            Assert.AreEqual(minAmount, itemConditional.MinItems);
            Assert.AreEqual(discount, itemConditional.Precent);
        }
        public void CompositeDiscount_2_leftSucceeds_rightDoesnt_and_implies_case(Operator @operator)
        {
            ItemConditionalDiscount_MinItems_ToDiscountOnAll discountObjleft  = new ItemConditionalDiscount_MinItems_ToDiscountOnAll(amount1price15, DateTime.MaxValue, 1, 0.7, MOCK_NAME_FOR_DESCRIPTION);
            ItemConditionalDiscount_MinItems_ToDiscountOnAll discountObjright = new ItemConditionalDiscount_MinItems_ToDiscountOnAll(amount3price10, DateTime.MaxValue, 5, 0.5, MOCK_NAME_FOR_DESCRIPTION);

            CompositeDiscount compositeDiscount             = new CompositeDiscount(discountObjleft, discountObjright, @operator);
            Dictionary <Guid, Tuple <int, double> > outCart = compositeDiscount.GetUpdatedPricesFromCart(testCart);

            Assert.AreEqual(15, outCart[amount1price15].Item2);
            Assert.AreEqual(10, outCart[amount3price10].Item2);
            Assert.AreEqual(200, outCart[amount10price200].Item2);
            Assert.AreEqual(5, outCart[amount2price5].Item2);
            validateAmountsAreSame(outCart, testCart);
        }
Beispiel #3
0
        public void ItemConditionalDiscount_MinItems_ToDiscountOnAll_SuccessAndFailureRunner(Guid itemID, double discount, int minItems, bool success)
        {
            ItemConditionalDiscount_MinItems_ToDiscountOnAll DicountObj = new ItemConditionalDiscount_MinItems_ToDiscountOnAll(itemID, DateTime.MaxValue, minItems, discount, MOCK_NAME_FOR_DESCRIPTION);
            Dictionary <Guid, Tuple <int, double> >          outCart    = DicountObj.GetUpdatedPricesFromCart(testCart);

            validateNothingButTargetItemChanged(outCart, testCart, itemID);
            Assert.AreEqual(testCart[itemID].Item1, outCart[itemID].Item1);
            if (success)
            {
                Assert.AreEqual(testCart[itemID].Item2 * (1 - discount), outCart[itemID].Item2);
            }
            else
            {
                Assert.AreEqual(testCart[itemID].Item2, outCart[itemID].Item2);
            }
        }
        private void AddComposite_CondAll_CondAll(Guid sessionID, string ownerName, Guid storeID, Guid itemID1, Guid itemID2, Operator op,
                                                  double discount1 = HALF_OFF, int duration1 = LONG_DURATION, int minAmount1 = MIN_AMOUNT,
                                                  double discount2 = HALF_OFF, int duration2 = LONG_DURATION, int minAmount2 = MIN_AMOUNT)
        {
            LoginSessionSuccess(sessionID, ownerName);
            ItemConditionalDiscount_MinItems_ToDiscountOnAll itemCondAll1 =
                DeserializeItemConditionalDiscount_discountOnAllSuccess(sessionID, storeID, itemID1,
                                                                        discount1, duration1, minAmount1);
            ItemConditionalDiscount_MinItems_ToDiscountOnAll itemCondAll2 =
                DeserializeItemConditionalDiscount_discountOnAllSuccess(sessionID, storeID, itemID2,
                                                                        discount2, duration2, minAmount2);
            CompositeDiscount compositeDiscount = DeserializeCompositeDiscountSuccess(sessionID, storeID, itemCondAll1.discountID,
                                                                                      itemCondAll2.discountID, op.ToString());

            int shortest = Math.Min(duration1, duration2);

            Assert.AreEqual(DateTime.Now.Date.AddDays(shortest), compositeDiscount.DateUntil.Date);
            Assert.AreEqual(itemCondAll1.discountID, compositeDiscount.DiscountLeftID);
            Assert.AreEqual(itemCondAll2.discountID, compositeDiscount.DiscountRightID);
            Assert.AreEqual(op, compositeDiscount.Op);
        }