Esempio n. 1
0
        public PedidoCommandHandlerTest()
        {
            _mediatorHandlerMock         = new Mock <IMediatorHandler>();
            _pedidoQueryRepositoryMock   = new Mock <IPedidoQueryRepository>();
            _pedidoCommandRepositoryMock = new Mock <IPedidoCommandRepository>();
            _pedidoCommandRepositoryMock = new Mock <IPedidoCommandRepository>();
            _produtoQueryRepositoryMock  = new Mock <IProdutoQueryRepository>();
            _usuarioQueryRepositoryMock  = new Mock <IUsuarioQueryRepository>();
            _saldoQueryRepositoryMock    = new Mock <ISaldoQueryRepository>();
            _saldoCommandRepositoryMock  = new Mock <ISaldoCommandRepository>();
            _enderecoQueryRepositoryMock = new Mock <IEnderecoQueryRepository>();
            _pedidoValidator             = new PedidoValidator();

            pedidoCommandHandler = new PedidoCommandHandler(
                new DomainNotificationHandler(),
                _mediatorHandlerMock.Object,
                _pedidoQueryRepositoryMock.Object,
                _pedidoCommandRepositoryMock.Object,
                _produtoQueryRepositoryMock.Object,
                _usuarioQueryRepositoryMock.Object,
                _saldoQueryRepositoryMock.Object,
                _saldoCommandRepositoryMock.Object,
                _enderecoQueryRepositoryMock.Object,
                _pedidoValidator);
        }
Esempio n. 2
0
 public PedidoTest()
 {
     pedidoValidator = new PedidoValidator();
     emailValido     = "*****@*****.**";
     enderecoValido  = new Endereco.Endereco(emailValido, "14801-320", "Goiás", 2525, "AP 503", "Centro", "Araraquara", "São Paulo");
     itemValido      = new PedidoItem(Guid.Parse("a41e9498-5a5c-4267-b3d4-8d54dc8a8266"), 1);
     pedidoValido    = new Pedido.Pedido("*****@*****.**", Enums.StatusEntrega.AGUARDANDOENVIO, DateTime.Now, new List <PedidoItem>(), enderecoValido);
 }
Esempio n. 3
0
        private void AssertMensagemEsperada(string mensagemEsperada, PedidoValidator pedidoValidation)
        {
            Assert.Equal(pedidoValidation.ValidationResult.IsValid, string.IsNullOrEmpty(mensagemEsperada));

            if (string.IsNullOrEmpty(mensagemEsperada))
            {
                Assert.Empty(pedidoValidation.ValidationResult.Errors);
            }
            else
            {
                Assert.Contains(pedidoValidation.ValidationResult.Errors, e => e.ErrorMessage == mensagemEsperada);
            }
        }
Esempio n. 4
0
        public PedidoCommandHandler(INotificationHandler <DomainNotification> notifications,
                                    IMediatorHandler mediator,
                                    IPedidoQueryRepository pedidoQueryRepository,
                                    IPedidoCommandRepository pedidoCommandRepository,
                                    IProdutoQueryRepository produtoQueryRespository,
                                    IUsuarioQueryRepository usuarioQueryRepository,
                                    ISaldoQueryRepository saldoQueryRepository,
                                    ISaldoCommandRepository saldoCommandRepository,
                                    IEnderecoQueryRepository enderecoQueryRepository,
                                    PedidoValidator pedidoValidator)
            : base(mediator, notifications)

        {
            _mediator = mediator;
            _pedidoQueryRepository   = pedidoQueryRepository;
            _pedidoCommandRepository = pedidoCommandRepository;
            _produtoQueryRepository  = produtoQueryRespository;
            _usuarioQueryRepository  = usuarioQueryRepository;
            _saldoQueryRepository    = saldoQueryRepository;
            _pedidoValidator         = pedidoValidator;
            _saldoCommandRepository  = saldoCommandRepository;
            _enderecoQueryRepository = enderecoQueryRepository;
        }
Esempio n. 5
0
        public void Run()
        {
            _logger.Information("Recuperando login e senha");
            string usuario = _configuration["user_login"];
            string senha   = _configuration["user_pass"];

            _logger.Information("Testando o consumo de mensagens com Kafka");
            var nomeTopic = _configuration["Kafka_Topic"];

            _logger.Information($"Topic = {nomeTopic}");

            try
            {
                var bootstrapServers = _configuration["Kafka_Broker"];
                TopicTools.CreateTopicAsync(bootstrapServers, nomeTopic);
            }
            catch (Exception e)
            {
                _logger.Warning("Topic já existe");
            }


            try
            {
                using var consumer = GetConsumerBuilder();
                consumer.Subscribe(nomeTopic);

                try
                {
                    while (true)
                    {
                        try
                        {
                            var cr    = consumer.Consume();
                            var dados = cr.Message.Value;

                            _logger.Information(
                                $"Mensagem lida: {dados}");

                            var pedido = JsonSerializer.Deserialize <Pedido>(dados,
                                                                             new JsonSerializerOptions()
                            {
                                PropertyNameCaseInsensitive = true
                            });

                            var validationResult = new PedidoValidator().Validate(pedido);
                            if (validationResult.IsValid)
                            {
                                var token = _deliveryExternalControl.Logar(new Auth()
                                {
                                    Login = usuario, Senha = senha
                                });
                                _deliveryExternalControl.EnviarPedido(pedido, token);
                                _logger.Information("Ação registrada com sucesso!");
                            }
                            else
                            {
                                _logger.Warning("Dados inválidos para a Ação");
                            }
                        }
                        catch (Exception e)
                        {
                            Console.WriteLine(e);
                            _logger.Warning("Erro na fila");
                        }
                    }
                }
                catch (OperationCanceledException)
                {
                    consumer.Close();
                    _logger.Warning("Cancelada a execução do Consumer...");
                }
            }
            catch (Exception ex)
            {
                _logger.Warning($"Exceção: {ex.GetType().FullName} | " +
                                $"Mensagem: {ex.Message}");
            }
        }
        public void Run()
        {
            _logger.Information("Recuperando login e senha");
            string usuario = _configuration["user_login"];
            string senha   = _configuration["user_pass"];

            _logger.Information("Testando o consumo de mensagens com Kafka");
            string nomeTopic = _configuration["Kafka_Topic"];

            _logger.Information($"Topic = {nomeTopic}");

            CancellationTokenSource cts = new CancellationTokenSource();

            Console.CancelKeyPress += (_, e) =>
            {
                e.Cancel = true;
                cts.Cancel();
            };

            try
            {
                using (var consumer = GetConsumerBuilder())
                {
                    consumer.Subscribe(nomeTopic);

                    try
                    {
                        while (true)
                        {
                            var    cr    = consumer.Consume(cts.Token);
                            string dados = cr.Message.Value;

                            _logger.Information(
                                $"Mensagem lida: {dados}");

                            var pedido = JsonSerializer.Deserialize <Pedido>(dados,
                                                                             new JsonSerializerOptions()
                            {
                                PropertyNameCaseInsensitive = true
                            });

                            var validationResult = new PedidoValidator().Validate(pedido);
                            if (validationResult.IsValid)
                            {
                                var token = _deliveryExternalControl.Logar(new Auth()
                                {
                                    Login = usuario, Senha = senha
                                });
                                _deliveryExternalControl.EnviarPedido(pedido, token);
                                _logger.Information("Ação registrada com sucesso!");
                            }
                            else
                            {
                                _logger.Error("Dados inválidos para a Ação");
                            }
                        }
                    }
                    catch (OperationCanceledException)
                    {
                        consumer.Close();
                        _logger.Warning("Cancelada a execução do Consumer...");
                    }
                }
            }
            catch (Exception ex)
            {
                _logger.Error($"Exceção: {ex.GetType().FullName} | " +
                              $"Mensagem: {ex.Message}");
            }
        }