public async Task Webhook_AoCriarumPedidoComClienteNaoAutenticado_RetornarSucesso() { // Arrange var pedidoId = Guid.NewGuid(); var command = new WebhookPagamentoCommand(pedidoId, PagamentoStatus.Aprovado); var pedido = Pedido.Criar(pedidoId, 999); var pagamento = PedidoPagamento.Criar(pedido, "4242424242424242", DateTime.Now.AddDays(1), 123); pedido.AdicionarPagamento(pagamento); pedido.AtualizarStatus(PedidoStatus.ProcessandoPagamento); //Obter pedido _mocker.GetMock <IUnitOfWork>() .Setup(p => p.Pedidos.ObterPorIdAsync(pedido.Id)) .Returns(Task.FromResult(pedido)); //Obter EventBus _mocker.GetMock <IEventBus>() .Setup(p => p.Publish(It.IsAny <string>(), It.IsAny <Event>(), It.IsAny <string>())) .Returns(Task.CompletedTask); // Act var responseResult = await _handler.Handle(command, CancellationToken.None); // Assert Assert.False(responseResult.HasFails); _mocker.GetMock <IUnitOfWork>().Verify(o => o.SaveAsync(), Times.Once); }
public async Task Webhook_AoCriarumWEbhookComComandoInvalido_RetornarNotificacoesComFalha() { // Arrange var command = new WebhookPagamentoCommand(Guid.Empty, PagamentoStatus.Aprovado); // Act var responseResult = await _handler.Handle(command, CancellationToken.None); // Assert Assert.True(responseResult.HasFails); }
public async Task <IActionResult> Webhook(WebhookPagamentoCommand command) { var response = await EventBus.SendCommand(command); if (response.HasFails) { return(BadRequest(response.Fails)); } return(Ok()); }
public async Task QuandoEuReceberEstaAtualizacao() { var pedido = _context.Get <CriarPedidoCommand>("pedido"); var status = _context.Get <string>("statusPagamento"); var pagamentoStatus = PagamentoStatus.Aguardando; if (status.Contains("Aprovado", StringComparison.InvariantCultureIgnoreCase)) { pagamentoStatus = PagamentoStatus.Aprovado; } else if (status.Contains("Reprovado", StringComparison.InvariantCultureIgnoreCase)) { pagamentoStatus = PagamentoStatus.Reprovado; } var command = new WebhookPagamentoCommand(pedido.Id, pagamentoStatus); var postResponse = await _testsFixture.Client.PostAsJsonAsync($"/api/pagamentos/webhook", command); _context.Set(postResponse); }