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