Exemplo n.º 1
0
        public void Adding_SameItem_With_Different_Quantity_To_Basket_Should_Change_Quantity()
        {
            //-----------------------------------------------------------------------------------------------------------
            // Arrange
            //-----------------------------------------------------------------------------------------------------------
            Guid      basketId   = Faker.Random.Uuid();
            Guid      itemId     = Faker.Random.Uuid();
            const int quantity   = 2;
            const int toQuantity = 4;

            var basketCreatedEvent   = new BasketCreatedEvent(basketId);
            var itemAddedEvent       = new ItemAddedEvent(basketId, itemId, quantity);
            var quantityChangedEvent = new ItemQuantityChangedEvent(basketId, itemId, quantity, toQuantity);

            //-----------------------------------------------------------------------------------------------------------
            // Act
            //-----------------------------------------------------------------------------------------------------------
            Basket basket = Basket.Create(basketId);

            basket.AddItem(itemId, quantity);
            basket.AddItem(itemId, toQuantity);

            //-----------------------------------------------------------------------------------------------------------
            // Assert
            //-----------------------------------------------------------------------------------------------------------
            basket.Items.Count.Should().Be(1);
            basket.ShouldPublishDomainEvents(basketCreatedEvent, itemAddedEvent, quantityChangedEvent);
        }
Exemplo n.º 2
0
        public void BasketItem_Quantity_Should_Be_Changed()
        {
            //-----------------------------------------------------------------------------------------------------------
            // Arrange
            //-----------------------------------------------------------------------------------------------------------
            Guid      basketId     = Faker.Random.Uuid();
            Guid      itemId       = Faker.Random.Uuid();
            const int fromQuantity = 2;
            const int toQuantity   = 4;

            var basketCreatedEvent       = new BasketCreatedEvent(basketId);
            var itemAddedEvent           = new ItemAddedEvent(basketId, itemId, fromQuantity);
            var itemQuantityChangedEvent = new ItemQuantityChangedEvent(basketId, itemId, fromQuantity, toQuantity);

            //-----------------------------------------------------------------------------------------------------------
            // Act
            //-----------------------------------------------------------------------------------------------------------
            Basket basket = Basket.Create(basketId);

            basket.AddItem(itemId, fromQuantity);
            basket.ChangeItemQuantity(itemId, toQuantity);

            //-----------------------------------------------------------------------------------------------------------
            // Assert
            //-----------------------------------------------------------------------------------------------------------
            basket.Items.Count.Should().Be(1);
            basket.ShouldPublishDomainEvents(basketCreatedEvent, itemAddedEvent, itemQuantityChangedEvent);
        }
Exemplo n.º 3
0
 private void When(ItemQuantityChangedEvent @event)
 {
     Items.First(x => x.Id == @event.ItemId).Route(@event);
 }
Exemplo n.º 4
0
 private void When(ItemQuantityChangedEvent @event)
 {
     Quantity = @event.ToQuantity;
 }
Exemplo n.º 5
0
        public Task Handle(ItemQuantityChangedEvent notification, CancellationToken cancellationToken)
        {
            // Handle Projections or inform the other Bounded Context...

            return(Task.CompletedTask);
        }