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