public void Dado_um_pedido_sem_itens_o_mesmo_nao_deve_ser_gerado() { var command = new CreateOrderCommand(); command.Customer = "123456"; command.ZipCode = "13411080"; command.PromoCode = "12345678"; command.Validate(); Assert.AreEqual(command.Valid, false); }
public void Dado_um_comando_invalido_o_pedido_nao_deve_ser_gerado_independente() { var command = new CreateOrderCommand(); command.Customer = ""; command.ZipCode = "12345678"; command.PromoCode = "12345678"; command.Items.Add(new CreateOrderItemCommand(Guid.NewGuid(), 1)); command.Items.Add(new CreateOrderItemCommand(Guid.NewGuid(), 1)); command.Validate(); Assert.AreEqual(command.Valid, false); }
public void DadoUmPromoCodeInexistenteOPedidoDeveSerGeradoNormalmente() { var command = new CreateOrderCommand(); command.Customer = "João Silva"; command.ZipCode = "13454424"; command.PromoCode = ""; command.Items.Add(new CreateOrderItemCommand(Guid.NewGuid(), 1)); command.Validate(); Assert.AreEqual(command.Valid, false); }
public void Dado_um_cliente_inexistente_o_pedido_nao_deve_ser_gerado() { var command = new CreateOrderCommand(); command.Customer = "555566"; command.ZipCode = "13411080"; command.PromoCode = "12345678"; command.Items.Add(new CreateOrderItemCommand(Guid.NewGuid(), 1)); command.Items.Add(new CreateOrderItemCommand(Guid.NewGuid(), 1)); command.Validate(); Assert.IsFalse(command.Valid); }
public void DadoUmComandoInvalidoOhPedidoNaoDeveSerGerado() { var command = new CreateOrderCommand(); command.Customer = ""; command.ZipCode = "13411080"; command.PromoCode = "12345678"; command.Items.Add(new CreateOrderItemCommand(Guid.NewGuid(), 1)); command.Items.Add(new CreateOrderItemCommand(Guid.NewGuid(), 1)); command.Validate(); Assert.AreEqual(command.Valid, false); }
public void Dado_um_pedido_sem_items_ele_nao_deve_ser_gerado_independente() { var command = new CreateOrderCommand(); command.Customer = "Pedro Portella"; command.ZipCode = "13454424"; command.PromoCode = "12345678"; // command.Items.Add(new CreateOrderItemCommand(Guid.NewGuid(), 1)); // command.Items.Add(new CreateOrderItemCommand(Guid.NewGuid(), 1)); command.Validate(); Assert.AreEqual(command.Valid, false); }
public void Dado_um_comando_invalido_o_pedido_nao_deve_ser_gerado() { var command = new CreateOrderCommand(); command.Customer = ""; // customer inválido command.ZipCode = "08040600"; command.PromoCode = "12345678"; command.Items.Add(new CreateOrderItemCommand(Guid.NewGuid(), 1)); command.Items.Add(new CreateOrderItemCommand(Guid.NewGuid(), 1)); command.Validate(); Assert.AreEqual(command.Valid, false); // já invalida antes de bater no handler }
public void Dado_um_promocode_inexistente_o_pedido_deve_ser_gerado_normalmente() { var command = new CreateOrderCommand(); command.Customer = "123456"; command.ZipCode = "13411080"; command.PromoCode = ""; command.Items.Add(new CreateOrderItemCommand(Guid.NewGuid(), 1)); command.Items.Add(new CreateOrderItemCommand(Guid.NewGuid(), 1)); command.Validate(); Assert.AreEqual(command.Valid, false); }
public void ShouldNotBeCreatedOrderWithInvalidCommand() { var command = new CreateOrderCommand(); command.Customer = ""; command.ZipCode = "12345678"; command.PromoCode = "123456789"; command.Itens.Add(new CreateOrderItemCommand(Guid.NewGuid(), 1)); command.Itens.Add(new CreateOrderItemCommand(Guid.NewGuid(), 1)); command.Validate(); Assert.False(command.Valid); }
public void DadoUmPedidoSemItensOMesmoNaoDeveSerGerado() { var command = new CreateOrderCommand(); command.Customer = "João Silva"; command.ZipCode = "13454424"; command.PromoCode = "12345678"; // command.Items.Add(new CreateOrderItemCommand(Guid.NewGuid(), 1)); // command.Items.Add(new CreateOrderItemCommand(Guid.NewGuid(), 1)); command.Validate(); Assert.AreEqual(command.Valid, false); }
public void Dado_um_comando_invalido_o_pedido_nao_deve_ser_gerado() { var command = new CreateOrderCommand { Customer = "", ZipCode = "593380000", PromoCode = "12345678", }; command.Items.Add(new CreateOrderItemCommand(Guid.NewGuid(), 1)); command.Items.Add(new CreateOrderItemCommand(Guid.NewGuid(), 1)); command.Validate(); Assert.AreEqual(command.Invalid, true); }
public void Dado_um_comando_valido_o_pedido_deve_ser_gerado() { var command = new CreateOrderCommand(); command.Customer = "12345678911"; command.ZipCode = "87035270"; command.PromoCode = "12345678"; command.Items.Add(new CreateOrderItemCommand(Guid.NewGuid(), 1)); command.Items.Add(new CreateOrderItemCommand(Guid.NewGuid(), 1)); command.Validate(); var orderHandler = new OrderHandler(_customerRepository, _deliveryFeeRepository, _discountRepository, _productRepository, _orderRepository); orderHandler.Handler(command); Assert.AreEqual(orderHandler.Valid, true); }
public void Dado_um_pedido_sem_itens_o_mesmo_nao_deve_ser_gerado() { var command = new CreateOrderCommand(); command.Customer = "12345678911"; command.ZipCode = "12345678"; command.PromoCode = "12345678"; command.Validate(); var handler = new OrderHandler( _customerRepository, _deliveryFeeRepository, _discountRepository, _productRepository, _orderRepository); handler.Handle(command); Assert.False(handler.IsValid); }
public void Dado_um_pedido_sem_itens_o_mesmo_nao_deve_ser_gerado() { var command = new CreateOrderCommand(); command.Customer = "12345678911"; command.ZipCode = "111"; command.PromoCode = "4455544"; command.Validate(); var handler = new OrderHandler( _customerRepository, _deliveryFeeRepository, _discountRepository, _productRepository, _orderRepository); var result = handler.Handle(command); Assert.IsFalse(((GenericCommandResult)result).Success); }
public ICommandResult Handle(CreateOrderCommand command) { // Fail Fast Validation command.Validate(); if (!command.IsValid) { return(new GenericCommandResult(false, "Pedido inválido", null)); } // 1. Recupera o cliente var customer = _customerRepository.Get(command.Customer); // 2. Calcula a taxa de entrega var deliveryFee = _deliveryFeeRepository.Get(command.ZipCode); // 3. Obtém o cupom de desconto var discount = _discountRepository.Get(command.PromoCode); // 4. Gera o pedido var products = _productRepository.Get(ExtractGuids.Extract(command.Items)).ToList(); var order = new Order(customer, deliveryFee, discount); foreach (var item in command.Items) { var product = products.Where(x => x.Id == item.Product).FirstOrDefault(); order.AddItem(product, item.Quantity); } // 5. Agrupa as notificações AddNotifications(order.Notifications); // 6. Verifica se deu tudo certo if (!IsValid) { return(new GenericCommandResult(false, "Falha ao gerar o pedido", Notifications)); } // 7. Retorna o resultado _orderRepository.Save(order); return(new GenericCommandResult(true, $"Pedido {order.Number} gerado com sucesso", order)); }
public void Dado_um_cliente_inexistente_o_pedido_nao_deve_ser_gerado() { var command = new CreateOrderCommand(); // TODO: Implementar command.Customer = "0"; command.ZipCode = "13411080"; command.PromoCode = "12345678"; command.Validate(); var handler = new OrderHandler( _customerRepository, _deliveryFeeRepository, _discountRepository, _productRepository, _orderRepository); handler.Handle(command); Assert.AreEqual(command.Valid, false); }
public void DadoUmComandoInvalido_OPedidoNaoDeveSerGerado() { // Arrange var command = new CreateOrderCommand { CustomerId = "", ZipCode = "13411080", PromoCode = "12345678", Items = new List <CreateOrderItemCommand> { new CreateOrderItemCommand(Guid.NewGuid(), 1), new CreateOrderItemCommand(Guid.NewGuid(), 1), } }; // Act command.Validate(); // Assert Assert.That(command.Valid, Is.False); }
public void Dado_um_comando_invalido_o_pedido_nao_deve_ser_gerado() { var command = new CreateOrderCommand(); command.Customer = ""; command.ZipCode = "13411080"; command.PromoCode = "12345678"; command.Items.Add(new CreateOrderItemCommand(Guid.NewGuid(), 1)); command.Items.Add(new CreateOrderItemCommand(Guid.NewGuid(), 1)); command.Validate(); var handler = new OrderHandler( _customerRepository, _deliveryFeeRepository, _discountRepository, _productRepository, _orderRepository); handler.Handle(command); Assert.False(handler.IsValid); }
public void Dado_um_promocode_inexistente_o_pedido_deve_ser_gerado_normalmente() { var command = new CreateOrderCommand(); command.Customer = "12345678911"; command.ZipCode = "12345678"; command.PromoCode = ""; command.Items.Add(new CreateOrderItemCommand(Guid.NewGuid(), 1)); command.Items.Add(new CreateOrderItemCommand(Guid.NewGuid(), 1)); command.Validate(); var handler = new OrderHandler( _customerRepository, _deliveryFeeRepository, _discountRepository, _productRepository, _orderRepository); handler.Handle(command); Assert.True(handler.IsValid); }
public void There_is_an_invalid_command_doesnt_create_order() { _orderCreateCommand.Validate(); Assert.AreEqual(_orderCreateCommand.Valid, false); }