Esempio n. 1
0
        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);
        }
Esempio n. 3
0
        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
        }
Esempio n. 8
0
        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);
        }
Esempio n. 9
0
        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);
        }
Esempio n. 10
0
        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);
        }
Esempio n. 12
0
        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);
        }
Esempio n. 13
0
        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);
        }
Esempio n. 15
0
        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);
        }
Esempio n. 18
0
        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);
        }
Esempio n. 19
0
        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);
        }
Esempio n. 20
0
 public void There_is_an_invalid_command_doesnt_create_order()
 {
     _orderCreateCommand.Validate();
     Assert.AreEqual(_orderCreateCommand.Valid, false);
 }