Ejemplo n.º 1
0
        public void ChangeCartItemForMultiShipment_WhenQuantityIsZeroInOneShipment_ShouldRemoveTheCorrespondantLineItem()
        {
            var quantity = 0;
            var size     = "small";
            var code     = "EAN";
            var newSize  = "small";
            var lineItem = new InMemoryLineItem
            {
                Quantity = 2,
                Code     = code
            };

            var removedLineItem = new InMemoryLineItem
            {
                Quantity = 3,
                Code     = code
            };

            _cart.GetFirstShipment().LineItems.Add(lineItem);
            var shipment = new FakeShipment();

            shipment.LineItems.Add(removedLineItem);
            _cart.AddShipment(shipment, _orderGroupFactoryMock.Object);
            _subject.ChangeCartItem(_cart, shipment.ShipmentId, code, quantity, size, newSize);

            Assert.DoesNotContain(_cart.GetFirstForm().Shipments, s => s.ShipmentId == shipment.ShipmentId && s.LineItems.Any(l => l.Code == code));
        }
Ejemplo n.º 2
0
        private void SetupPromotionEngine()
        {
            _promotionEngineMock = new Mock <IPromotionEngine>();


            _discountAmount = 0.3m;
            var lineItem = new InMemoryLineItem
            {
                Code     = "code1",
                Quantity = 1,
                LineItemDiscountAmount = _discountAmount
            };
            var affectedItems         = new[] { lineItem };
            var redemptionDescription = new FakeRedemptionDescription(affectedItems.Select(item => new AffectedEntries(new List <PriceEntry> {
                new PriceEntry(item)
            })));

            var rewardDescription = RewardDescription.CreateMoneyReward(FulfillmentStatus.Fulfilled, new [] { redemptionDescription }, null, 0m, null);

            _promotionEngineMock
            .Setup(x => x.Evaluate(
                       It.IsAny <IEnumerable <ContentReference> >(),
                       It.IsAny <IMarket>(),
                       It.IsAny <Currency>(),
                       RequestFulfillmentStatus.Fulfilled
                       ))
            .Returns(new RewardDescription[] { rewardDescription });
        }
Ejemplo n.º 3
0
        public ActionResult EvalPromos(DemoPromoViewModel viewModel)
        {
            var market          = _currentMarket.GetCurrentMarket();
            var inMemOrderGroup = new InMemoryOrderGroup(market, market.DefaultCurrency);

            foreach (var item in viewModel.CatalogItems)
            {
                if (item.Quantity > 0)
                {
                    var inMemLineItem = new InMemoryLineItem
                    {
                        Code     = item.Code,
                        Quantity = item.Quantity
                    };
                    inMemOrderGroup.GetFirstShipment().LineItems.Add(inMemLineItem);
                }
            }

            var promoSettings = new PromotionEngineSettings(RequestFulfillmentStatus.All, true);

            viewModel.Rewards = _promoEngine.Run(inMemOrderGroup, promoSettings);

            viewModel.CartItems = inMemOrderGroup.GetFirstShipment().LineItems;
            if (inMemOrderGroup.GetFirstForm().Promotions.Count > 0)
            {
                viewModel.PromoItems = inMemOrderGroup.GetFirstForm().Promotions.First().Entries;
            }

            return(View("Index", viewModel));
        }
Ejemplo n.º 4
0
        public void LoadCart_WhenAllItemsIsValid_ShouldReturnCartWithAllItems()
        {
            var lineItem = new InMemoryLineItem {
                Quantity = 2, Code = "code1"
            };
            var lineItem2 = new InMemoryLineItem {
                Quantity = 2, Code = "code2"
            };

            _cart.GetFirstShipment().LineItems.Add(lineItem);
            _cart.GetFirstShipment().LineItems.Add(lineItem2);

            var result = _subject.LoadCart(_subject.DefaultCartName);

            Assert.Equal(2, result.GetAllLineItems().Count());
        }
Ejemplo n.º 5
0
        public void ChangeCartItem_WhenQuantityIsZero_ShouldRemoveLineItem()
        {
            var shipmentId = 0;
            var quantity   = 0;
            var size       = "small";
            var code       = "EAN";
            var newSize    = "small";
            var lineItem   = new InMemoryLineItem
            {
                Quantity = 2,
                Code     = code
            };

            _cart.GetFirstShipment().LineItems.Add(lineItem);

            _subject.ChangeCartItem(_cart, shipmentId, code, quantity, size, newSize);

            Assert.Empty(_cart.GetAllLineItems());
        }
Ejemplo n.º 6
0
        public void ChangeCartItem_ShouldChangeQuantityAccordingly()
        {
            var shipmentId = 0;
            var quantity   = 5m;
            var size       = "small";
            var code       = "EAN";
            var newSize    = "small";
            var lineItem   = new InMemoryLineItem
            {
                Quantity = 2,
                Code     = code
            };

            _cart.GetFirstShipment().LineItems.Add(lineItem);

            _subject.ChangeCartItem(_cart, shipmentId, code, quantity, size, newSize);

            Assert.Equal <decimal>(quantity, lineItem.Quantity);
        }
Ejemplo n.º 7
0
        public void LoadCart_WhenExistInvalidItems_ShouldReturnCartWithOnlyValidItems()
        {
            var _validCode   = "code1";
            var _inValidCode = "code2";

            var lineItem = new InMemoryLineItem {
                Quantity = 2, Code = _validCode
            };
            var lineItem2 = new InMemoryLineItem {
                Quantity = 2, Code = _inValidCode
            };

            _cart.GetFirstShipment().LineItems.Add(lineItem);
            _cart.GetFirstShipment().LineItems.Add(lineItem2);

            _lineItemValidatorMock.Setup(x => x.Validate(lineItem, It.IsAny <MarketId>(), It.IsAny <Action <ILineItem, ValidationIssue> >())).Returns(true);
            _lineItemValidatorMock.Setup(x => x.Validate(lineItem2, It.IsAny <MarketId>(), It.IsAny <Action <ILineItem, ValidationIssue> >())).Returns(false);

            var result = _subject.LoadCart(_subject.DefaultCartName);

            Assert.Contains(result.GetAllLineItems(), l => l.Code == _validCode);
            Assert.DoesNotContain(result.GetAllLineItems(), l => l.Code == _inValidCode);
        }
Ejemplo n.º 8
0
        public void ChangeCartItem_ShouldChangeQuantityAccordingly()
        {
            var shipmentId = 0;
            var quantity = 5m;
            var size = "small";
            var code = "EAN";
            var newSize = "small";
            var lineItem = new InMemoryLineItem
            {
                Quantity = 2,
                Code = code
            };

            _cart.GetFirstShipment().LineItems.Add(lineItem);

            _subject.ChangeCartItem(_cart, shipmentId, code, quantity, size, newSize);

            Assert.Equal<decimal>(quantity, lineItem.Quantity);
        }
Ejemplo n.º 9
0
        public void LoadCart_WhenExistInvalidItems_ShouldReturnCartWithOnlyValidItems()
        {
            var _validCode = "code1";
            var _inValidCode = "code2";

            var lineItem = new InMemoryLineItem { Quantity = 2, Code = _validCode };            
            var lineItem2 = new InMemoryLineItem { Quantity = 2, Code = _inValidCode };
            _cart.GetFirstShipment().LineItems.Add(lineItem);
            _cart.GetFirstShipment().LineItems.Add(lineItem2);

            _lineItemValidatorMock.Setup(x => x.Validate(lineItem, It.IsAny<IMarket>(), It.IsAny<Action<ILineItem, ValidationIssue>>())).Returns(true);
            _lineItemValidatorMock.Setup(x => x.Validate(lineItem2, It.IsAny<IMarket>(), It.IsAny<Action<ILineItem, ValidationIssue>>())).Returns(false);

            var result = _subject.LoadCart(_subject.DefaultCartName);
            
            Assert.True(result.GetAllLineItems().Any(l => l.Code == _validCode));
            Assert.False(result.GetAllLineItems().Any(l => l.Code == _inValidCode));
        }
Ejemplo n.º 10
0
        public void LoadCart_WhenAllItemsIsValid_ShouldReturnCartWithAllItems()
        {
            var lineItem = new InMemoryLineItem { Quantity = 2, Code = "code1" };
            var lineItem2 = new InMemoryLineItem { Quantity = 2, Code = "code2" };
            _cart.GetFirstShipment().LineItems.Add(lineItem);
            _cart.GetFirstShipment().LineItems.Add(lineItem2);

            var result = _subject.LoadCart(_subject.DefaultCartName);
            
            Assert.Equal(2, result.GetAllLineItems().Count()); 
        }
Ejemplo n.º 11
0
        public void ChangeCartItem_WhenQuantityIsZero_ShouldRemoveLineItem()
        {
            var shipmentId = 0;
            var quantity = 0;
            var size = "small";
            var code = "EAN";
            var newSize = "small";
            var lineItem = new InMemoryLineItem
            {
                Quantity = 2,
                Code = code
            };

            _cart.GetFirstShipment().LineItems.Add(lineItem);

            _subject.ChangeCartItem(_cart, shipmentId, code, quantity, size, newSize);

            Assert.Empty(_cart.GetAllLineItems());
        }
Ejemplo n.º 12
0
        private void SetupPromotionEngine()
        {
            _promotionEngineMock = new Mock<IPromotionEngine>();
            

            _discountAmount = 0.3m;
            var lineItem = new InMemoryLineItem
            {
                Code = "code1",
                Quantity = 1, 
                LineItemDiscountAmount = _discountAmount
            };
            var affectedItems = new[] {lineItem};
            var redemptionDescription = new FakeRedemptionDescription(affectedItems.Select(item => new AffectedEntries(new List<PriceEntry> { new PriceEntry(item) })));

            var rewardDescription = RewardDescription.CreateMoneyReward(FulfillmentStatus.Fulfilled, new [] {redemptionDescription}, null, 0m, null);
            _promotionEngineMock
                .Setup(x => x.Evaluate(
                    It.IsAny<IEnumerable<ContentReference>>(),
                    It.IsAny<IMarket>(),
                    It.IsAny<Currency>(),
                    RequestFulfillmentStatus.Fulfilled
                    ))
                .Returns(new RewardDescription[] { rewardDescription  });
        }