public async Task Deve_salvar_evento_de_alteracao_de_cartao_de_credito_do_pedido() { var idDoPedido = _faker.Random.Int(0); const string expiracaoDoCartaoDeCredito = "01/27"; var nomeDoDonoDoCartao = _faker.Person.FirstName; var numeroDoNovoCartaoDeCredito = _faker.Random.Int(0).ToString(); var cvvDoNovoCartao = _faker.Random.Int(100, 999).ToString(); var cartaoDeCreditoDto = new CartaoDeCreditoDto { Expiracao = expiracaoDoCartaoDeCredito, Nome = nomeDoDonoDoCartao, CVV = cvvDoNovoCartao, Numero = numeroDoNovoCartaoDeCredito }; var pedido = PedidoBuilder.Novo().Criar(); _pedidoRepositorio.Setup(pr => pr.ObterPedidoPeloId(idDoPedido)).Returns(pedido); _pedidoRepositorio.Setup(pr => pr.Adicionar(It.IsAny <Pedido>())); await _atualizacaoDePedido.AtualizarCartaoDeCredito(idDoPedido, cartaoDeCreditoDto); _eventoRepositorio.Verify(er => er.Salvar(It.Is <AlterouCartaoDeCreditoDoPedidoEvento>(e => e.IdDoPedido == pedido.Id && e.NomeDoUsuario == nomeDoDonoDoCartao && e.NumeroDoCartao == numeroDoNovoCartaoDeCredito))); }
public async Task Deve_notificar_servico_de_pagamento_sobre_atualizacao_do_cartao_de_credito() { var idDoPedido = _faker.Random.Int(0); const string expiracaoDoCartaoDeCredito = "02/27"; var nomeDoDonoDoCartao = _faker.Person.FirstName; var numeroDoNovoCartaoDeCredito = _faker.Random.Int(0).ToString(); var cvvDoNovoCartao = _faker.Random.Int(100, 999).ToString(); var cartaoDeCreditoDto = new CartaoDeCreditoDto { Expiracao = expiracaoDoCartaoDeCredito, Nome = nomeDoDonoDoCartao, CVV = cvvDoNovoCartao, Numero = numeroDoNovoCartaoDeCredito }; var pedido = PedidoBuilder.Novo().Criar(); _pedidoRepositorio.Setup(pr => pr.ObterPedidoPeloId(idDoPedido)).Returns(pedido); _pedidoRepositorio.Setup(pr => pr.Adicionar(It.IsAny <Pedido>())); await _atualizacaoDePedido.AtualizarCartaoDeCredito(idDoPedido, cartaoDeCreditoDto); _mensageria.Verify(m => m.PublishAsync( It.Is <AlterouCartaoDeCreditoDoPedidoEvento>(a => a.IdDoPedido == pedido.Id && a.NomeDoUsuario == nomeDoDonoDoCartao && a.NumeroDoCartao == numeroDoNovoCartaoDeCredito))); }
public async Task Deve_salvar_um_evento_de_pedido_criado_ao_criar_pedido() { var produto = _faker.Random.Word(); var quantidade = _faker.Random.Int(0); var valor = _faker.Random.Decimal(); var cartaoDeCreditoDto = new CartaoDeCreditoDto { Numero = _faker.Random.Int(0).ToString(), Nome = _faker.Person.FirstName, CVV = _faker.Random.Int(100, 999).ToString(), Expiracao = "03/27" }; var cartaoDeCredito = MapeadorDeCartaoDeCredito.Mapear(cartaoDeCreditoDto); var pedidoDto = new PedidoDto { Produto = produto, Quantidade = quantidade, Valor = valor, CartaoDeCreditoDto = cartaoDeCreditoDto }; var pedidoCriado = PedidoBuilder.Novo().ComProduto(produto).ComQuantidade(quantidade).ComValor(valor) .ComCartaoDeCredito(cartaoDeCredito).Criar(); var eventoEsperado = new PedidoCriadoEvento(pedidoCriado.Id, pedidoCriado.CartaoDeCredito.Nome, pedidoCriado.CartaoDeCredito.Numero, pedidoCriado.Produto, pedidoCriado.Valor); await _criacaoDePedido.Criar(pedidoDto); _eventoRepositorio.Verify(pr => pr.Salvar(It.Is <PedidoCriadoEvento>(evento => evento.ToExpectedObject(ctx => ctx.Ignore(p => p.Id)).Matches(eventoEsperado)))); }
public void Deve_mapear_pedido() { var produto = _faker.Random.Word(); var quantidade = _faker.Random.Int(0); var valor = _faker.Random.Decimal(); var cartaoDeCreditoDto = new CartaoDeCreditoDto { Numero = _faker.Random.Int(0).ToString(), Nome = _faker.Person.FirstName, CVV = _faker.Random.Int(100, 999).ToString(), Expiracao = "03/27" }; var cartaoDeCredito = MapeadorDeCartaoDeCredito.Mapear(cartaoDeCreditoDto); var pedidoDto = new PedidoDto { Produto = produto, Quantidade = quantidade, Valor = valor, CartaoDeCreditoDto = cartaoDeCreditoDto }; var pedidoEsperado = PedidoBuilder.Novo().ComProduto(produto).ComQuantidade(quantidade).ComValor(valor) .ComCartaoDeCredito(cartaoDeCredito).Criar(); var pedidoObtido = MapeadorDePedido.Mapear(pedidoDto); pedidoEsperado.ToExpectedObject(ctx => ctx.Ignore(p => p.Id)).ShouldMatch(pedidoObtido); }
public async Task Deve_notificar_que_pedido_foi_criado() { var produto = _faker.Random.Word(); var quantidade = _faker.Random.Int(0); var valor = _faker.Random.Decimal(); var cartaoDeCreditoDto = new CartaoDeCreditoDto { Numero = _faker.Random.Int(0).ToString(), Nome = _faker.Person.FirstName, CVV = _faker.Random.Int(100, 999).ToString(), Expiracao = "03/27" }; var pedidoDto = new PedidoDto { Produto = produto, Quantidade = quantidade, Valor = valor, CartaoDeCreditoDto = cartaoDeCreditoDto }; await _criacaoDePedido.Criar(pedidoDto); _mensageria.Verify(m => m.PublishAsync( It.Is <PedidoCriadoEvento>(p => p.Produto == produto && p.Valor == valor && p.NomeDoUsuario == cartaoDeCreditoDto.Nome))); }
public void Deve_retornar_nulo_quando_dto_for_nulo() { CartaoDeCreditoDto cartaoDeCreditoDtoInvalido = null; var cartaoDeCredito = MapeadorDeCartaoDeCredito.Mapear(cartaoDeCreditoDtoInvalido); Assert.Null(cartaoDeCredito); }
public async Task <ActionResult> AtualizarCartaoDeCredito(int idDoPedido, [FromBody] CartaoDeCreditoDto novoCartaoDeCreditoDto) { await _atualizacaoDePedido.AtualizarCartaoDeCredito(idDoPedido, novoCartaoDeCreditoDto); await _unitOfWork.Commit(); return(Ok(true)); }
public async Task AtualizarCartaoDeCredito(int idDoPedido, CartaoDeCreditoDto cartaoDeCreditoDto) { var novoCartaoDeCredito = MapeadorDeCartaoDeCredito.Mapear(cartaoDeCreditoDto); var pedido = _pedidoRepositorio.ObterPedidoPeloId(idDoPedido); pedido.AtualizarCartaoDeCredito(novoCartaoDeCredito); await _pedidoRepositorio.AtualizarPedido(pedido); await NotificarAlteracaoDeCartaoDeCreditoAoServicoDePagamento(pedido, novoCartaoDeCredito); }
public void Deve_mapear_o_cartao_de_credito() { var numero = _faker.Random.Int(0).ToString(); var nome = _faker.Person.FirstName; var cvv = _faker.Random.Int(100, 999).ToString(); const string expiracao = "03/27"; var cartaoDeCreditoEsperado = CartaoDeCreditoBuilder.Novo().ComNome(nome).ComNumero(numero).ComCvv(cvv) .ComExpiracao(expiracao).Criar(); var cartaoDeCreditoDto = new CartaoDeCreditoDto { Numero = numero, Nome = nome, CVV = cvv, Expiracao = expiracao, }; var cartaoDeCreditoObtido = MapeadorDeCartaoDeCredito.Mapear(cartaoDeCreditoDto); cartaoDeCreditoEsperado.ToExpectedObject().ShouldMatch(cartaoDeCreditoObtido); }
public void Simular_alteracao_do_cartao_de_credito() { const int idDoPedido = 5; var cartaoDeCreditoDto = new CartaoDeCreditoDto { CVV = "788", Expiracao = "03/28", Nome = _nomeDoNovoDonoDoCartaoDeCredito, Numero = _novoNumeroDoCartaoDeCredito }; var cartaoDeCredito = CartaoDeCreditoBuilder.Novo().ComNumero(_antigoNumeroDoCartaoDeCredito).ComNome(_nomeDoAntigoDonoDoCartaoDeCredito).Criar(); var pedido = PedidoBuilder.Novo().ComCartaoDeCredito(cartaoDeCredito).Criar(); var pedidoRepositorio = new Mock <IPedidoRepositorio>(); var eventoRepositorio = new Mock <IEventoRepositorio>(); var mensageria = new Mock <IBus>(); var atualizacaoDePedido = new AtualizacaoDePedido(pedidoRepositorio.Object, eventoRepositorio.Object, mensageria.Object); pedidoRepositorio.Setup(pr => pr.ObterPedidoPeloId(It.IsAny <int>())).Returns(pedido); pedidoRepositorio.Setup(pr => pr.Adicionar(It.IsAny <Pedido>())); atualizacaoDePedido.AtualizarCartaoDeCredito(idDoPedido, cartaoDeCreditoDto); }
public static CartaoDeCredito Mapear(CartaoDeCreditoDto cartaoDeCreditoDto) { return(cartaoDeCreditoDto == null ? null : new CartaoDeCredito(cartaoDeCreditoDto.Numero, cartaoDeCreditoDto.Nome, cartaoDeCreditoDto.CVV, cartaoDeCreditoDto.Expiracao)); }