Ejemplo n.º 1
0
        public void Adding_SameItem_With_Different_Quantity_To_Basket_Should_Change_Quantity()
        {
            var customerId = Faker.Random.Int(min: 1);
            var itemId     = Faker.Random.Int(min: 1);
            var quantity   = 2;
            var toQuantity = 4;

            var itemStockChecker = new Mock <IItemStockChecker>();

            itemStockChecker.Setup(mr => mr.IsAvaliable(itemId, quantity)).Returns(Task.FromResult(true));
            itemStockChecker.Setup(mr => mr.IsAvaliable(itemId, toQuantity)).Returns(Task.FromResult(true));

            var basketCreatedEvent             = new BasketCreatedEvent(customerId);
            var basketItemAddedEvent           = new BasketItemAddedEvent(customerId, itemId, quantity);
            var basketItemQuantityChangedEvent =
                new BasketItemQuantityChangedEvent(customerId, itemId, quantity, toQuantity);

            var basket = Basket.Create(customerId);

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

            basket.Items.Count.Should().Be(1);
            basket.ShouldPublishDomainEvents(basketCreatedEvent, basketItemAddedEvent, basketItemQuantityChangedEvent);
        }
Ejemplo n.º 2
0
        public void BasketItem_Quantity_Should_Be_Changed()
        {
            var       customerId   = Faker.Random.Int(min: 1);
            var       itemId       = Faker.Random.Int(min: 1);
            const int fromQuantity = 2;
            const int toQuantity   = 4;

            var itemStockChecker = new Mock <IItemStockChecker>();

            itemStockChecker.Setup(mr => mr.IsAvaliable(itemId, fromQuantity)).Returns(Task.FromResult(true));
            itemStockChecker.Setup(mr => mr.IsAvaliable(itemId, toQuantity)).Returns(Task.FromResult(true));

            var basketCreatedEvent             = new BasketCreatedEvent(customerId);
            var basketItemAddedEvent           = new BasketItemAddedEvent(customerId, itemId, fromQuantity);
            var basketItemQuantityChangedEvent =
                new BasketItemQuantityChangedEvent(customerId, itemId, fromQuantity, toQuantity);

            var basket = Basket.Create(customerId);

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

            basket.Items.Count.Should().Be(1);
            basket.ShouldPublishDomainEvents(basketCreatedEvent, basketItemAddedEvent, basketItemQuantityChangedEvent);
        }