public void Process_WhenAddingTwoDifferentProducts_ShouldAddBothToCart()
        {
            // Arrange
            var product1Id = Guid.NewGuid();
            var product1   = new ItemAddedToCart
            {
                GrossItemPrice = 129,
                NetItemPrice   = 99,
                Product        = product1Id,
                Quantity       = 1
            };

            var product2Id = Guid.NewGuid();
            var product2   = new ItemAddedToCart
            {
                GrossItemPrice = 449,
                NetItemPrice   = 399,
                Product        = product2Id,
                Quantity       = 1
            };

            // Act
            _cartEventProcessors.Process(product1);
            _cartEventProcessors.Process(product2);

            // Assert
            Assert.Equal(2, _testCart.Lines.Count());
            A.CallTo(() => _fakeCarts.Save(A <Cart> ._)).MustHaveHappened(Repeated.Exactly.Twice);
        }
        public void Process_WhenAddingSameProductThreeTimes_ShouldOnlyIncreaseQuantityInCart()
        {
            // Arrange
            var productId = Guid.NewGuid();
            var product   = new ItemAddedToCart
            {
                GrossItemPrice = 129,
                NetItemPrice   = 99,
                Product        = productId,
                Quantity       = 1
            };

            // Act
            _cartEventProcessors.Process(product);
            _cartEventProcessors.Process(product);
            _cartEventProcessors.Process(product);

            // Assert
            Assert.Single(_testCart.Lines);
            Assert.Equal(3, _testCart.Lines.Single().Quantity);
            Assert.Equal(129, _testCart.Lines.Single().Price.Gross);
            Assert.Equal(99, _testCart.Lines.Single().Price.Net);
            Assert.Equal(productId, _testCart.Lines.Single().Product);

            A.CallTo(() => _fakeCarts.Save(A <Cart> ._)).MustHaveHappened(Repeated.Exactly.Times(3));
        }
Beispiel #3
0
 private void Apply(ItemAddedToCart @event)
 {
     Cart[@event.CartEntryId] = new CartItemModel
     {
         ItemId   = @event.ItemId,
         Quantity = @event.Quantity,
         Price    = @event.Price
     };
 }
Beispiel #4
0
        void Added(ItemAddedToCart message)
        {
            var cart = _cartRepository.Get();

            cart.Items += message.Quantity;
            cart.Total += message.Price * (decimal)message.Quantity;
            _cartRepository.Update(cart);

            CartChanged(cart);
        }
Beispiel #5
0
        public void Process(ItemAddedToCart @event)
        {
            var cart = _carts.GetById(@event.Cart);

            cart.Add(@event.Product, @event.Quantity, new Price
            {
                Net   = @event.NetItemPrice,
                Gross = @event.GrossItemPrice
            });
            _carts.Save(cart);
        }
 public void UpdateState(ItemAddedToCart @event)
 {
     if (items.ContainsKey(@event.ProductId))
     {
         items[@event.ProductId] = new CartItem(@event.ProductId, items[@event.ProductId].Quantity + 1);
     }
     else
     {
         items.Add(@event.ProductId, new CartItem(@event.ProductId, 1));
     }
 }
        public void Apply(ItemAddedToCart e)
        {
            var item = itemsInCart.FirstOrDefault(i => i.ItemNumber == e.Item.ItemNumber);

            if (item != null)
            {
                item.Count++;
            }
            else
            {
                itemsInCart.Add(new ItemInCart
                {
                    Artist       = e.Item.Artist,
                    Count        = 1,
                    ItemNumber   = e.Item.ItemNumber,
                    ReleasedYear = e.Item.ReleasedYear,
                    Title        = e.Item.Title,
                });
            }
        }
 public void Process(ItemAddedToCart @event)
 {
     _logger.Information($"Item with article '{@event.Article} added to cart'");
 }
        public void AddItem(string productId)
        {
            var @event = new ItemAddedToCart(Guid.NewGuid(), StreamId, productId, DateTime.UtcNow);

            Apply(@event);
        }
Beispiel #10
0
 public void Apply(ItemAddedToCart evt)
 {
     Items.Add(new Item(evt.Id, evt.Name));
 }
Beispiel #11
0
 private static bool OnItemAdded(ItemAddedToCart arg)
 {
     Console.WriteLine(arg.MenuItem.Name + " added to cart.");
     return(true);
 }