Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }