示例#1
0
        public void RemoveCompositeDiscount_composedOfComposites_Success()
        {
            LoginSessionSuccess(REGISTERED_SESSION_ID, FIRST_OPENER_USERNAME, PASSWORD);
            OpenDiscount openDiscount1 = DeserializeOpenDiscountSuccess(REGISTERED_SESSION_ID, FIRST_STORE_ID, FIRST_ITEM_FIRST_STORE_ID,
                                                                        HALF_OFF, LONG_DURATION);
            OpenDiscount openDiscount2 = DeserializeOpenDiscountSuccess(REGISTERED_SESSION_ID, FIRST_STORE_ID, SECOND_ITEM_FIRST_STORE_ID,
                                                                        HALF_OFF, SHORT_DURATION);
            CompositeDiscount compositeDiscount = DeserializeCompositeDiscountSuccess(REGISTERED_SESSION_ID, FIRST_STORE_ID, openDiscount1.discountID,
                                                                                      openDiscount2.discountID, "|");

            OpenDiscount openDiscount3 = DeserializeOpenDiscountSuccess(REGISTERED_SESSION_ID, FIRST_STORE_ID, FIRST_ITEM_FIRST_STORE_ID,
                                                                        HALF_OFF, LONG_DURATION);
            OpenDiscount openDiscount4 = DeserializeOpenDiscountSuccess(REGISTERED_SESSION_ID, FIRST_STORE_ID, SECOND_ITEM_FIRST_STORE_ID,
                                                                        HALF_OFF, SHORT_DURATION);
            CompositeDiscount compositeDiscount2 = DeserializeCompositeDiscountSuccess(REGISTERED_SESSION_ID, FIRST_STORE_ID, openDiscount3.discountID,
                                                                                       openDiscount4.discountID, "|");

            CompositeDiscount compositeDiscount3 = DeserializeCompositeDiscountSuccess(REGISTERED_SESSION_ID, FIRST_STORE_ID, compositeDiscount.discountID,
                                                                                       compositeDiscount2.discountID, "|");

            Assert.True(DeserializeRemoveDiscountSuccess(REGISTERED_SESSION_ID, FIRST_STORE_ID, compositeDiscount3.discountID));
            Assert.False(marketFacade.DiscountExistsInStore(FIRST_STORE_ID, openDiscount1.discountID));
            Assert.False(marketFacade.DiscountExistsInStore(FIRST_STORE_ID, openDiscount2.discountID));
            Assert.False(marketFacade.DiscountExistsInStore(FIRST_STORE_ID, compositeDiscount.discountID));
            Assert.False(marketFacade.DiscountExistsInStore(FIRST_STORE_ID, openDiscount3.discountID));
            Assert.False(marketFacade.DiscountExistsInStore(FIRST_STORE_ID, openDiscount4.discountID));
            Assert.False(marketFacade.DiscountExistsInStore(FIRST_STORE_ID, compositeDiscount2.discountID));
            Assert.False(marketFacade.DiscountExistsInStore(FIRST_STORE_ID, compositeDiscount3.discountID));
        }
        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);
        }
        public void CompositeDiscount_2_open_xor_none_discounted(Operator @operator)
        {
            OpenDiscount openDiscountItem1 = new OpenDiscount(amount1price15, 0.7, DateTime.MaxValue, MOCK_NAME_FOR_DESCRIPTION);
            OpenDiscount openDiscountItem3 = new OpenDiscount(amount3price10, 0.3, DateTime.MaxValue, MOCK_NAME_FOR_DESCRIPTION);

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

            Assert.AreEqual(15, outCart[amount1price15].Item2);
            Assert.AreEqual(10.0, outCart[amount3price10].Item2);
            Assert.AreEqual(200, outCart[amount10price200].Item2);
            Assert.AreEqual(5, outCart[amount2price5].Item2);
            validateAmountsAreSame(outCart, testCart);
        }
        public void CompositeDiscount_serealizeIdsWithoutObjects()
        {
            OpenDiscount openDiscountItem1 = new OpenDiscount(amount1price15, 0.7, DateTime.Now, MOCK_NAME_FOR_DESCRIPTION);
            OpenDiscount openDiscountItem3 = new OpenDiscount(amount3price10, 0.3, DateTime.Now, MOCK_NAME_FOR_DESCRIPTION);

            CompositeDiscount compositeDiscount = new CompositeDiscount(openDiscountItem1, openDiscountItem3, Operator.AND);

            string json = JsonConvert.SerializeObject(compositeDiscount);

            CompositeDiscount deserialized = JsonConvert.DeserializeObject <CompositeDiscount>(json);

            Assert.AreEqual(openDiscountItem1.discountID, deserialized.DiscountLeftID);
            Assert.AreEqual(openDiscountItem3.discountID, deserialized.DiscountRightID);
            Assert.Null(deserialized.DiscountLeft);
            Assert.Null(deserialized.DiscountRight);
        }
        public void CalculateDiscountTestForCustomer()
        {
            var rootDiscount = new CompositeDiscount("Discounts 2020");
            var priceList    = new PriceList("Pricelist 2020");
            var promotion    = new Promotion("Promotion 2020");
            var coupon       = new Coupon("Coupon 2020");

            rootDiscount.Add(coupon);
            rootDiscount.Add(priceList);
            rootDiscount.Add(promotion);

            var result = rootDiscount.CalculateTotalDiscount(340m, rootDiscount, new Result());

            Assert.True(result.FinalAmount == 280.70m);
            Assert.NotNull(result.TextResultAnalysis);
        }
示例#6
0
        private void AddComposite_Open_Open(Guid sessionID, string ownerName, Guid storeID, Guid itemID1, Guid itemID2, Operator op,
                                            double discount1 = HALF_OFF, int duration1 = LONG_DURATION,
                                            double discount2 = HALF_OFF, int duration2 = LONG_DURATION)
        {
            LoginSessionSuccess(sessionID, ownerName);
            OpenDiscount openDiscount1 = DeserializeOpenDiscountSuccess(sessionID, storeID, itemID1,
                                                                        discount1, duration1);
            OpenDiscount openDiscount2 = DeserializeOpenDiscountSuccess(sessionID, storeID, itemID2,
                                                                        discount2, duration2);
            CompositeDiscount compositeDiscount = DeserializeCompositeDiscountSuccess(sessionID, storeID, openDiscount1.discountID,
                                                                                      openDiscount2.discountID, op.ToString());

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

            Assert.AreEqual(DateTime.Now.Date.AddDays(shortest), compositeDiscount.DateUntil.Date);
            Assert.AreEqual(openDiscount1.discountID, compositeDiscount.DiscountLeftID);
            Assert.AreEqual(openDiscount2.discountID, compositeDiscount.DiscountRightID);
            Assert.AreEqual(op, compositeDiscount.Op);
        }
示例#7
0
        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);
        }
示例#8
0
        public void GetAllDiscounts_BigCompostite_forItem_Success()
        {
            LoginSessionSuccess(REGISTERED_SESSION_ID, FIRST_OPENER_USERNAME, PASSWORD);
            OpenDiscount openDiscount1 = DeserializeOpenDiscountSuccess(REGISTERED_SESSION_ID, FIRST_STORE_ID, FIRST_ITEM_FIRST_STORE_ID,
                                                                        HALF_OFF, LONG_DURATION);
            OpenDiscount openDiscount2 = DeserializeOpenDiscountSuccess(REGISTERED_SESSION_ID, FIRST_STORE_ID, SECOND_ITEM_FIRST_STORE_ID,
                                                                        HALF_OFF, SHORT_DURATION);
            CompositeDiscount compositeDiscount = DeserializeCompositeDiscountSuccess(REGISTERED_SESSION_ID, FIRST_STORE_ID, openDiscount1.discountID,
                                                                                      openDiscount2.discountID, "|");

            OpenDiscount openDiscount3 = DeserializeOpenDiscountSuccess(REGISTERED_SESSION_ID, FIRST_STORE_ID, FIRST_ITEM_FIRST_STORE_ID,
                                                                        HALF_OFF, LONG_DURATION);
            OpenDiscount openDiscount4 = DeserializeOpenDiscountSuccess(REGISTERED_SESSION_ID, FIRST_STORE_ID, SECOND_ITEM_FIRST_STORE_ID,
                                                                        HALF_OFF, SHORT_DURATION);
            CompositeDiscount compositeDiscount2 = DeserializeCompositeDiscountSuccess(REGISTERED_SESSION_ID, FIRST_STORE_ID, openDiscount3.discountID,
                                                                                       openDiscount4.discountID, "|");

            CompositeDiscount compositeDiscount3 = DeserializeCompositeDiscountSuccess(REGISTERED_SESSION_ID, FIRST_STORE_ID, compositeDiscount.discountID,
                                                                                       compositeDiscount2.discountID, "|");
            string res = marketFacade.GetAllDicsounts(REGISTERED_SESSION_ID, FIRST_STORE_ID, FIRST_ITEM_FIRST_STORE_ID);

            Assert.True(MarketOperationSuccess(res));
        }