public void DeveRetornarErroQuandoTiverUmaAssinaturaValida() { var nome = new Nome("Thiago", "Chagas"); var email = new Email("*****@*****.**"); var doc = new Documento("05492256769", Dominio.Enums.ETipoDocumento.CPF); var endereco = new Endereco("A", "21", "Niteroi", "23130110", "Fonseca", "Rio De Janeiro"); var estudante = new Estudante(nome, doc, email); var assinatura = new Assinatura(null); var pagamento = new PayPalPagamento("12345678", DateTime.Now, DateTime.Now.AddDays(5), 10, 10, "Thiago", doc, endereco, email); assinatura.InserirPagamento(pagamento); estudante.InserirAssinatura(assinatura); estudante.InserirAssinatura(assinatura); Assert.IsTrue(estudante.Invalid); }
public ICommandResult Handle(CriarPayPalAssinaturaCommand command) { // se usar Fail Fast Validations usar o código abaixo // command.Validar(); // if(command.Invalid) // { // AddNotifications(command); // return new CommandResult(false, "Não foi possível realizar sua assinatura"); // } // Verifica se o Documento já está cadastrado if (_alunoRepository.DocumentoExiste(command.Documento)) { AddNotification("Documento", "Este CPF já está em uso"); } // Verifica se o E-mail já está cadastrado if (_alunoRepository.EmailExiste(command.Email)) { AddNotification("Email", "Este CPF já está em uso"); } // Gerar os VOs var nome = new Nome(command.PrimeiroNome, command.SegundoNome); var documento = new Documento(command.Documento, EDocumentoTipo.CPF); var email = new Email(command.Email); var endereco = new Endereco(command.Rua, command.Numero, command.Bairro, command.Cidade, command.Estado, command.Pais, command.Cep); // Gerar as Entidades var aluno = new Aluno(nome, documento, email); var assinatura = new Assinatura(DateTime.Now.AddMonths(1)); // Tipos de Pagamento só muda a implementação do pagamento var pagamento = new PayPalPagamento( command.CodigoTransacao, command.DataPagamento, command.DataExpiracao, command.Total, command.TotalPago, command.Proprietario, new Documento(command.DocumentoDonoCartao, command.TipoDocumentoCartao), endereco, email ); // Realacionamentos assinatura.AdicionarPagamento(pagamento); aluno.AdicionarAssinatura(assinatura); // Agrupar as Validações AddNotifications(nome, documento, email, endereco, aluno, assinatura, pagamento); // Checar as notificações if (Invalid) { return(new CommandResult(false, "Não foi possível realizar sua assinatura")); } // Salvar as Informações _alunoRepository.CriarAssinatura(aluno); // Enviar E-mail de boas vindas _emailService.Enviar(aluno.Nome.ToString(), aluno.Email.EmailEnd, "Bem vindo ao martinsnelson.io", "Assinatura Criada"); // Retornar Informações return(new CommandResult(true, "Assinatura realizada com sucesso")); }