public void Aluno_Deve_Ter_Email_Válido()
        {
            var usuario = new Usuario("*****@*****.**", "123456", "123456", TipoUsuario.Aluno);
            var aluno = new Aluno("DIEGO NEVES", "00000000000", new DateTime(1989, 5, 24), true, usuario);

            Assert.IsFalse(aluno.ResultadoValidacao.Erros.Any(x => x.Message == "O e-mail do aluno é inválido."));
        }
        public void Aluno_Deve_Ter_CPF_Válido()
        {
            var usuario = new Usuario("", "", "", TipoUsuario.Aluno);
            var aluno = new Aluno("DIEGO NEVES", "66823100990", new DateTime(1989, 5, 24), true, usuario);

            Assert.IsFalse(aluno.ResultadoValidacao.Erros.Any(x => x.Message == "O CPF do aluno é inválido."));
        }
        public void Aluno_Deve_Ser_Menor_De_Idade()
        {
            var usuario = new Usuario("892jhhhd", "123456", "123456", TipoUsuario.Aluno);
            var aluno = new Aluno("DIEGO NEVES", "00000000000", new DateTime(2015, 5, 24), true, usuario);

            Assert.IsTrue(aluno.ResultadoValidacao.Erros.Any(x => x.Message == "O aluno deve ser maior de idade."));
        }
        public void Aluno_Deve_Ter_Nome_Com_Mais_De_50_Caracteres()
        {
            var usuario = new Usuario("", "", "", TipoUsuario.Aluno);
            var aluno = new Aluno("PEDRO JORGE CAMARGO PEREIRA DE CASTRO ALVES DA SILVA SAURO FERNANDEZ DE MELO REGO COM BATATAS E FRITAS E MUITA COCA COLA", "00000000000", new DateTime(1989, 5, 24), true, usuario);

            Assert.IsFalse(aluno.IsValid);
            Assert.IsTrue(aluno.ResultadoValidacao.Erros.Any(x => x.Message == "O nome do aluno deve ter entre 3 e 50 caracteres."));
        }
        public static Aluno CriarAlunoParaCadastro(string email, string senha, string SenhaCriptografada, string nome, string cpf, DateTime dataNascimento, bool ativo)
        {
            var usuario = new Usuario(email, senha, SenhaCriptografada, TipoUsuario.Aluno);
            var aluno = new Aluno(nome, cpf, dataNascimento, ativo, usuario);
            aluno.AdicionarHistorico(new AlunoHistorico(aluno, SituacaoAluno.Cadastrado));

            return aluno;
        }
        public Aluno(string nome, string cpf, DateTime dataNascimento, bool ativo, Usuario usuario)
        {
            AlunoId = Guid.NewGuid();
            Nome = nome;
            CPF = cpf;
            DataNascimento = dataNascimento;
            DataCadastro = DateTime.Now;
            Historico = new List<AlunoHistorico>();
            Usuario = usuario;

            var fiscal = new AlunoEstaAptoParaCadastroValidation();
            ResultadoValidacao = fiscal.Validar(this);
        }
        public void Aluno_Com_Email_Não_Cadastrado()
        {
            var usuario = new Usuario("*****@*****.**", "123456", "123456", TipoUsuario.Aluno);
            var aluno = new Aluno("DIEGO NEVES", "94514198455", new DateTime(1989, 5, 24), true, usuario);

            var stubRepo = MockRepository.GenerateStub<IAlunoRepository>();
            stubRepo.Stub(x => x.ObterPorEmail(aluno.Usuario.Email)).Return(null);

            var alunoValidation = new AlunoEstaConsistenteParaCadastroValidation(stubRepo);
            var result = alunoValidation.Validar(aluno);

            Assert.IsFalse(result.Erros.Any(x => x.Message == "Já existe um aluno com esse e-mail."));
        }
        public void Aluno_Deve_Ter_Nome_Com_Menos_De_3_Caracteres()
        {
            var usuario = new Usuario("", "", "", TipoUsuario.Aluno);
            var aluno = new Aluno("PE", "00000000000", new DateTime(1989, 5, 24), true, usuario);

            Assert.IsFalse(aluno.IsValid);
            Assert.IsTrue(aluno.ResultadoValidacao.Erros.Any(x => x.Message == "O nome do aluno deve ter entre 3 e 50 caracteres."));
        }
        public void Aluno_Deve_Ter_Senha_Com_Menos_De_6_Caracteres()
        {
            var usuario = new Usuario("*****@*****.**", "12234", "", TipoUsuario.Aluno);
            var aluno = new Aluno("DIEGO NEVES", "66823100990", new DateTime(1989, 5, 24), true, usuario);

            Assert.IsFalse(aluno.IsValid);
            Assert.IsTrue(aluno.ResultadoValidacao.Erros.Any(x => x.Message == "A senha deve deve ter entre 6 e 20 caracteres."));
        }