public async Task When_Change_Quantity_Is_Made_With_Zero_Then_Item_Should_Be_Removed_From_The_Basket() { //----------------------------------------------------------------------------------------------------------- // Arrange //----------------------------------------------------------------------------------------------------------- Guid basketId = Faker.Random.Uuid(); Guid itemId = Faker.Random.Uuid(); const int quantity = 2; const int toQuantity = 0; var addItemToBasketCommand = new AddItemToBasketCommand(basketId, itemId, quantity); var changeQuantityCommand = new ChangeQuantityCommand(basketId, itemId, toQuantity); //----------------------------------------------------------------------------------------------------------- // Act //----------------------------------------------------------------------------------------------------------- await Sut.Send(addItemToBasketCommand); await Sut.Send(changeQuantityCommand); //----------------------------------------------------------------------------------------------------------- // Assert //----------------------------------------------------------------------------------------------------------- Basket basket = await Read(async context => { return(await context.Baskets.Include(x => x.Items).FirstOrDefaultAsync(x => x.Id == basketId)); }); basket.Should().NotBeNull(); basket.Items.Count.Should().Be(0); basket.Items.Should().NotContain(x => x.Id == itemId); }
public void it_adds_product_to_cart_and_prints_it_out_using_command_pattern() { // Arrange var shoppingCartRepository = new ShoppingCartRepository(); var productsRepository = new ProductsRepository(); Product product = productsRepository.FindBy("SM7B"); var addToCartCommand = new AddToCartCommand(shoppingCartRepository, productsRepository, product); var increaseQuantityCommand = new ChangeQuantityCommand(ChangeQuantityCommand.Operation.Increase, shoppingCartRepository, productsRepository, product); var manager = new CommandManager(); manager.Invoke(addToCartCommand); manager.Invoke(increaseQuantityCommand); manager.Invoke(increaseQuantityCommand); manager.Invoke(increaseQuantityCommand); manager.Invoke(increaseQuantityCommand); PrintCart(shoppingCartRepository); manager.Undo(); PrintCart(shoppingCartRepository); }
private static void TestCommand() { var shoppingCartRepository = new ShoppingCartRepository(); var productsRepository = new ProductsRepository(); var product = productsRepository.FindBy("SM7B"); var addToCartCommand = new AddToCartCommand(shoppingCartRepository, productsRepository, product); var increaseQuantityCommand = new ChangeQuantityCommand( ChangeQuantityCommand.Operation.Increase, shoppingCartRepository, productsRepository, product); var manager = new CommandManager(); manager.Invoke(addToCartCommand); manager.Invoke(increaseQuantityCommand); manager.Invoke(increaseQuantityCommand); manager.Invoke(increaseQuantityCommand); manager.Invoke(increaseQuantityCommand); ShoppingCartRepository.PrintCart(shoppingCartRepository); manager.Undo(); ShoppingCartRepository.PrintCart(shoppingCartRepository); }
public async Task Quantity_Should_Be_Changed_When_New_Quantity_Provided_For_Same_Item() { //----------------------------------------------------------------------------------------------------------- // Arrange //----------------------------------------------------------------------------------------------------------- Guid basketId = Faker.Random.Uuid(); Guid itemId = Faker.Random.Uuid(); const int quantity = 2; const int toQuantity = 4; var addItemToBasketCommand = new AddItemToBasketCommand(basketId, itemId, quantity); var changeQuantityCommand = new ChangeQuantityCommand(basketId, itemId, toQuantity); //----------------------------------------------------------------------------------------------------------- // Act //----------------------------------------------------------------------------------------------------------- await Sut.Send(addItemToBasketCommand); await Sut.Send(changeQuantityCommand); //----------------------------------------------------------------------------------------------------------- // Assert //----------------------------------------------------------------------------------------------------------- Basket basket = await Read(async context => { return(await context.Baskets.Include(x => x.Items).FirstOrDefaultAsync(x => x.Id == basketId)); }); basket.Should().NotBeNull(); basket.Items.Count.Should().Be(1); basket.Items.Should().Contain(x => x.Id == itemId); basket.Items.First(x => x.Id == itemId).Quantity.Should().Be(toQuantity); }
public static void Main(string[] args) { var shoppingCartRepository = new ShoppingCartRepository(); var productRepository = new ProductRepository(); var product = productRepository.FindBy("SM7B"); var addToCartCommand = new AddToCartCommand(shoppingCartRepository, productRepository, product); var increaseQuantityCommand = new ChangeQuantityCommand(ChangeQuantityCommand.Operation.Increase, productRepository, shoppingCartRepository, product); var manager = new CommandManager(); manager.Invoke(addToCartCommand); manager.Invoke(increaseQuantityCommand); manager.Invoke(increaseQuantityCommand); manager.Invoke(increaseQuantityCommand); manager.Invoke(increaseQuantityCommand); PrintCart(shoppingCartRepository); manager.Undo(); PrintCart(shoppingCartRepository); }
public ProductViewModel(ShoppingCartViewModel shoppingCartViewModel, IShoppingCartRepository shoppingCartRepository, IProductRepository productRepository, Product product, int quantity = 0) { Product = product; Quantity = quantity; var addToCartCommand = new AddToCartCommand(shoppingCartRepository, productRepository, product); var increaseQuantityCommand = new ChangeQuantityCommand(ChangeQuantityCommand.Operation.Increase, shoppingCartRepository, productRepository, product); var decreaseQuantityCommand = new ChangeQuantityCommand(ChangeQuantityCommand.Operation.Decrease, shoppingCartRepository, productRepository, product); var removeFromCartCommand = new RemoveFromCartCommand(shoppingCartRepository, productRepository, product); AddToCartCommand = new RelayCommand( execute: () => { addToCartCommand.Execute(); shoppingCartViewModel.Refresh(); }, canExecute: () => addToCartCommand.CanExecute()); IncreaseQuantityCommand = new RelayCommand( execute: () => { increaseQuantityCommand.Execute(); shoppingCartViewModel.Refresh(); }, canExecute: () => increaseQuantityCommand.CanExecute()); DecreaseQuantityCommand = new RelayCommand( execute: () => { decreaseQuantityCommand.Execute(); shoppingCartViewModel.Refresh(); }, canExecute: () => decreaseQuantityCommand.CanExecute()); RemoveFromCartCommand = new RelayCommand( execute: () => { removeFromCartCommand.Execute(); shoppingCartViewModel.Refresh(); }, canExecute: () => removeFromCartCommand.CanExecute()); }
public void it_() { // Arrange var shoppingCartRepository = new ShoppingCartRepository(); var productsRepository = new ProductsRepository(); Product product = productsRepository.FindBy("SM7B"); var addToCartCommand = new AddToCartCommand(shoppingCartRepository, productsRepository, product); var increaseQuantityCommand = new ChangeQuantityCommand(ChangeQuantityCommand.Operation.Increase, shoppingCartRepository, productsRepository, product); var removeAllFromCart = new RemoveAllFromCart(shoppingCartRepository, productsRepository, product); var manager = new CommandManager(); manager.Invoke(addToCartCommand); manager.Invoke(increaseQuantityCommand); manager.Invoke(increaseQuantityCommand); manager.Invoke(increaseQuantityCommand); manager.Invoke(increaseQuantityCommand); PrintCart(shoppingCartRepository); manager.Undo(); PrintCart(shoppingCartRepository); manager.Invoke(addToCartCommand); manager.Invoke(increaseQuantityCommand); manager.Invoke(increaseQuantityCommand); manager.Invoke(increaseQuantityCommand); manager.Invoke(increaseQuantityCommand); PrintCart(shoppingCartRepository); manager.Invoke(removeAllFromCart); PrintCart(shoppingCartRepository); }
private static void Main(string[] args) { var shoppingCartRepository = new ShoppingCartRepository(); var productsRepository = new ProductsRepository(); var product1 = productsRepository.FindBy("SM7B"); var product2 = productsRepository.FindBy("EOSR1"); var addProduct1ToCartCommand = new AddToCartCommand( shoppingCartRepository, productsRepository, product1); var addProduct2ToCartCommand = new AddToCartCommand( shoppingCartRepository, productsRepository, product2); var increaseProduct1QuantityCommand = new ChangeQuantityCommand( ChangeQuantityCommand.Operation.Increase, shoppingCartRepository, productsRepository, product1); var manager = new CommandManager(); manager.Invoke(addProduct1ToCartCommand); manager.Invoke(addProduct2ToCartCommand); manager.Invoke(increaseProduct1QuantityCommand); manager.Invoke(increaseProduct1QuantityCommand); manager.Invoke(increaseProduct1QuantityCommand); shoppingCartRepository.PrintCart(); manager.Undo(); Console.WriteLine("--After Undoing--"); shoppingCartRepository.PrintCart(); // shoppingCartRepository.Add(product); // shoppingCartRepository.IncreaseQuantity(product.ArticleId); // shoppingCartRepository.IncreaseQuantity(product.ArticleId); // shoppingCartRepository.IncreaseQuantity(product.ArticleId); // shoppingCartRepository.IncreaseQuantity(product.ArticleId); }
public void Change_Quantiy_Should_Throw_AggregateNotFoundException_When_Basket_Does_Not_Exist() { //----------------------------------------------------------------------------------------------------------- // Arrange //----------------------------------------------------------------------------------------------------------- Guid basketId = Faker.Random.Uuid(); Guid itemId = Faker.Random.Uuid(); const int toQuantity = 4; var changeQuantityCommand = new ChangeQuantityCommand(basketId, itemId, toQuantity); //----------------------------------------------------------------------------------------------------------- // Act //----------------------------------------------------------------------------------------------------------- Func <Task> act = () => Sut.Send(changeQuantityCommand); //----------------------------------------------------------------------------------------------------------- // Assert //----------------------------------------------------------------------------------------------------------- act.Should().Throw <Exceptions.AggregateNotFoundException>().WithMessage(string.Format(Messages.AggregateNotFoundExceptionMessage, basketId)); }
public async Task Handle(ChangeQuantityCommand request, CancellationToken cancellationToken) => await When(request, async (command, context, cToken) =>