Esempio 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);
        }
Esempio 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);
        }
Esempio n. 3
0
        public void BasketItem_Should_Be_Added_To_Basket_When_Item_Quantity_Greater_Than_Zero()
        {
            var customerId = Faker.Random.Int(min: 1);
            var itemId     = Faker.Random.Int(min: 1);
            var quantity   = 2;

            var itemStockChecker = new Mock <IItemStockChecker>();

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

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

            var basket = Basket.Create(customerId);

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

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

            var itemStockChecker = new Mock <IItemStockChecker>();

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

            var basketCreatedEvent   = new BasketCreatedEvent(customerId);
            var basketItemAddedEvent = new BasketItemAddedEvent(customerId, itemId, fromQuantity);
            var basketCleanedEvent   = new BasketCleanedEvent(customerId);

            var basket = Basket.Create(customerId);

            basket.AddItem(itemId, fromQuantity, itemStockChecker.Object);
            basket.Clear();

            basket.Items.Count.Should().Be(0);
            basket.ShouldPublishDomainEvents(basketCreatedEvent, basketItemAddedEvent, basketCleanedEvent);
        }