Exemplo n.º 1
0
        public void Deve_registrar_que_o_pagamento_foi_aprovado()
        {
            const string bandeiraDoCartaoEsperada = "Master";
            var          pagamento = PagamentoBuilder.Novo().Criar();

            pagamento.Aprovar(bandeiraDoCartaoEsperada);

            Assert.True(pagamento.Aprovado);
        }
Exemplo n.º 2
0
        public void Deve_registrar_a_bandeira_do_cartao_ao_aprovar_pagamento()
        {
            const string bandeiraDoCartaoEsperada = "Master";
            var          pagamento = PagamentoBuilder.Novo().Criar();

            pagamento.Aprovar(bandeiraDoCartaoEsperada);

            Assert.Equal(pagamento.BandeiraDoCartao, bandeiraDoCartaoEsperada);
        }
Exemplo n.º 3
0
        public void Nao_deve_alterar_o_cartao_de_credito_quando_informar_nome_invalido(string nomeNoCartaoDeCreditoInvalido)
        {
            const string mensagemDeErroEsperada      = "É necessário informar o nome registrado no cartão de crédito";
            var          novoNumeroDoCartaoDeCredito = _faker.Random.Int(1000000).ToString();
            var          pagamento = PagamentoBuilder.Novo().Criar();

            void Acao() => pagamento.AlterarCartaoDeCredito(novoNumeroDoCartaoDeCredito, nomeNoCartaoDeCreditoInvalido);

            Assert.Throws <ExcecaoDeDominio <Pagamento> >(Acao).PossuiErroComAMensagemIgualA(mensagemDeErroEsperada);
        }
Exemplo n.º 4
0
        public void Deve_alterar_o_cartao_de_credito()
        {
            var novoNumeroDoCartaoDeCredito = _faker.Random.Int(1000000).ToString();
            var nomeNoCartaoDeCredito       = _faker.Person.FullName;
            var pagamento = PagamentoBuilder.Novo().Criar();

            pagamento.AlterarCartaoDeCredito(novoNumeroDoCartaoDeCredito, nomeNoCartaoDeCredito);

            Assert.Equal(novoNumeroDoCartaoDeCredito, pagamento.NumeroDoCartaoDeCredito);
            Assert.Equal(nomeNoCartaoDeCredito, pagamento.NomeNoCartaoDeCredito);
        }
Exemplo n.º 5
0
        public async Task Deve_enviar_evento_de_pagamento_negado_ao_negar_o_pagamento_de_um_cartao_no_reprocessamento_de_um_pagamento(string numeroDeCartaoDeCreditoInvalido)
        {
            var id           = _faker.Random.Int(0);
            var nomeDoCartao = _faker.Person.FullName;
            var produto      = _faker.Random.String2(9);
            var valor        = _faker.Random.Decimal();
            var alterouCartaoDeCreditoDoPedidoEvento = new AlterouCartaoDeCreditoDoPedidoEvento(id, nomeDoCartao, numeroDeCartaoDeCreditoInvalido, produto, valor);
            var pagamento = PagamentoBuilder.Novo().Criar();

            _pagamentoRepositorio.Setup(pr => pr.ObterPeloIdDoPedido(id)).ReturnsAsync(pagamento);
            _pagamentoRepositorio.Setup(pr => pr.AtualizarPagamento(It.IsAny <Pagamento>()));
            _mensageria.Setup(m => m.PublishAsync(It.IsAny <PagamentoRecusadoEvento>()));

            await _processamentoDePagamento.ReprocessarPagamentoAsync(alterouCartaoDeCreditoDoPedidoEvento);

            _mensageria.Verify(m => m.PublishAsync(It.Is <PagamentoRecusadoEvento>(p => p.IdDoPedido == pagamento.IdDoPedido)));
        }
Exemplo n.º 6
0
        public async Task Deve_atualizar_informacoes_do_cartao_de_credito_ao_reprocessar_pagamento()
        {
            var id             = _faker.Random.Int(0);
            var nomeDoCartao   = _faker.Person.FullName;
            var numeroDeCartao = _faker.Random.Int(0).ToString();
            var produto        = _faker.Random.String2(9);
            var valor          = _faker.Random.Decimal();
            var alterouCartaoDeCreditoDoPedidoEvento = new AlterouCartaoDeCreditoDoPedidoEvento(id, nomeDoCartao, numeroDeCartao, produto, valor);
            var pagamento = PagamentoBuilder.Novo().Criar();

            _pagamentoRepositorio.Setup(pr => pr.ObterPeloIdDoPedido(id)).ReturnsAsync(pagamento);
            _pagamentoRepositorio.Setup(pr => pr.AtualizarPagamento(It.IsAny <Pagamento>()));

            await _processamentoDePagamento.ReprocessarPagamentoAsync(alterouCartaoDeCreditoDoPedidoEvento);

            _pagamentoRepositorio.Verify(pr
                                         => pr.AtualizarPagamento(It.Is <Pagamento>(p
                                                                                    => p.NumeroDoCartaoDeCredito == numeroDeCartao && p.NomeNoCartaoDeCredito == nomeDoCartao)));
        }