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