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