示例#1
0
        public void Incluir(Anunciante anunciante)
        {
            this.ValidarAnunciante(anunciante);
            this.ValidarSeEmailExiste(anunciante);

            anunciante.DataCadastro = DateTime.Now;

            this.repositorioAnunciante.Incluir(anunciante);
        }
 public void Atualizar_Anunciante_Invalido_Dispara_Exception_5_Erros()
 {
     try
     {
         Anunciante anunciante = new Anunciante();
         target.Atualizar(anunciante);
     }
     catch (Exception ex)
     {
         Assert.AreEqual(5, ex.Message.Split('\n').Where(e => !string.IsNullOrWhiteSpace(e)).Count());
         throw;
     }
 }
        public void Atualizar_Anunciante_Valido_Chama_Repositorio_ObterAnuncianteDeEmail_Atualizar()
        {
            Anunciante anunciante = new Anunciante()
            {
                Nome = "Teste",
                Email = "*****@*****.**",
                Telefone = "(11)1234-4321",
                DataNascimento = new DateTime(1988, 5, 12),
                Cidade = new Cidade()
            };

            target.Atualizar(anunciante);
            repositorioAnuncianteMock.Verify(r => r.ObterAnuncianteDeEmail(anunciante.Email));
            repositorioAnuncianteMock.Verify(r => r.Atualizar(anunciante));
        }
示例#4
0
        public void Anunciar_Anuncio_Valido_Chama_Servico_Incluir_Anunciante_Automovel__Estatistica_DataAnuncio_Atual_Status_AguardandoAprovacao()
        {
            Automovel automovel = new Automovel(new Modelo()) { ParcelasRestantes = 1, ValorParcela = 10.00M };
            Anunciante anunciante = new Anunciante();
            Anuncio anuncio = new Anuncio(anunciante, automovel, new Plano() { Ativo = true });
            EstatisticaAnuncio estatisticaAnuncio = new EstatisticaAnuncio(anuncio);

            target.Anunciar(anuncio);

            servicoAnuncianteMock.Verify(s => s.Incluir(anunciante));
            repositorioAutomovelMock.Verify(s => s.Incluir(automovel));
            repositorioEstatisticaAnuncioMock.Verify(s => s.Incluir(estatisticaAnuncio));
            repositorioAnuncioMock.Verify(s => s.Anuciar(anuncio));

            Assert.AreEqual(DateTime.Now.ToShortDateString(), anuncio.Data.ToShortDateString());
            Assert.AreEqual(StatusAnuncio.AguardandoAprovacao, anuncio.Status);
        }
示例#5
0
        private void ValidarAnunciante(Anunciante anunciante)
        {
            if (anunciante == null)
            {
                throw new ArgumentNullException();
            }

            StringBuilder erros = new StringBuilder();

            if (string.IsNullOrWhiteSpace(anunciante.Nome))
            {
                erros.AppendLine("Nome inválido");
            }

            if (string.IsNullOrWhiteSpace(anunciante.Email))
            {
                erros.AppendLine("Email inválido.");
            }

            if (string.IsNullOrWhiteSpace(anunciante.Telefone))
            {
                erros.AppendLine("Telefone inválido.");
            }

            if (anunciante.DataNascimento == DateTime.MinValue)
            {
                erros.AppendLine("Data de nascimento inválida");
            }

            if (DateTime.Now.Year - anunciante.DataNascimento.Year < 18)
            {
                erros.AppendLine("O anunciante deve ter no mínimo 18 anos de idade.");
            }

            if (anunciante.Cidade == null)
            {
                erros.AppendLine("Cidade inválida.");
            }

            if (erros.Length > 0)
            {
                throw new Exception(erros.ToString());
            }
        }
        public void Incluir_Anunciante_Valido_Data_Cadastro_DataAtual_Chama_Repositorio_ObterAnuncianteDeEmail_Incluir()
        {
            Anunciante anunciante = new Anunciante()
            {
                Nome = "Teste",
                Email = "*****@*****.**",
                Telefone = "(11)1234-4321",
                DataNascimento = new DateTime(1988, 5, 12),
                Cidade = new Cidade()
            };

            target.Incluir(anunciante);
            repositorioAnuncianteMock.Verify(r => r.ObterAnuncianteDeEmail(anunciante.Email));
            repositorioAnuncianteMock.Verify(r => r.Incluir(anunciante));
            Assert.AreEqual(DateTime.Now.ToShortDateString(), anunciante.DataCadastro.ToShortDateString());
        }
示例#7
0
        public void ObterAnunciosDoAnunciante_Anunciante_Valido_Chama_Repositorio()
        {
            Anunciante anunciante = new Anunciante();

            target.ObterAnunciosDoAnunciante(anunciante);

            repositorioAnuncioMock.Verify(r => r.ObterAnunciosDoAnunciante(anunciante));
        }
示例#8
0
        public void ReprovarAnuncio_Anuncio_Valido_Chama_Atualizar_Automovel_Chama_Repositorio()
        {
            Automovel automovel = new Automovel(new Modelo()) { ParcelasRestantes = 1, ValorParcela = 10.00M };
            Anunciante anunciante = new Anunciante();
            Anuncio anuncio = new Anuncio(anunciante, automovel, new Plano() { Ativo = true });

            target.ReprovarAnuncio(anuncio);

            repositorioAutomovelMock.Verify(s => s.Atualizar(automovel));
            repositorioAnuncioMock.Verify(s => s.Atualizar(anuncio));
            Assert.AreEqual(StatusAnuncio.Reprovado, anuncio.Status);
        }
示例#9
0
        public void Atualizar_Anuncio_Valido_Chama_Servico_Atualizar_Automovel_Repositorio_Atualizar()
        {
            Automovel automovel = new Automovel(new Modelo()) { ParcelasRestantes = 1, ValorParcela = 10.00M };
            Anunciante anunciante = new Anunciante();
            Anuncio anuncio = new Anuncio(anunciante, automovel, new Plano() { Ativo = true });

            target.Atualizar(anuncio);

            repositorioAutomovelMock.Verify(s => s.Atualizar(automovel));
            repositorioAnuncioMock.Verify(s => s.Atualizar(anuncio));
        }
示例#10
0
        public void Excluir_Anuncio_Valido_Chama_Servico_Excluir_Automovel_Repositorio_Excluir()
        {
            Automovel automovel = new Automovel(new Modelo());
            Anunciante anunciante = new Anunciante();
            Anuncio anuncio = new Anuncio(anunciante, automovel, new Plano() { Ativo = true });
            EstatisticaAnuncio estatisticaAnuncio = new EstatisticaAnuncio(anuncio);

            repositorioEstatisticaAnuncioMock.Setup(s => s.ObterEstatisticaDoAnuncio(anuncio)).Returns(estatisticaAnuncio);

            target.Excluir(anuncio);

            repositorioAutomovelMock.Verify(s => s.Excluir(automovel));
            repositorioEstatisticaAnuncioMock.Verify(s => s.Excluir(estatisticaAnuncio));
            repositorioAnuncioMock.Verify(s => s.Excluir(anuncio));
        }
示例#11
0
        public List<Anuncio> ObterAnunciosDoAnunciante(Anunciante anunciante)
        {
            if (anunciante == null)
            {
                throw new ArgumentNullException();
            }

            return this.repositorioDeAnuncios.ObterAnunciosDoAnunciante(anunciante);
        }
示例#12
0
 public Anuncio(Anunciante anunciante, Automovel automovel, Plano plano)
 {
     this.Anunciante = anunciante;
     this.Automovel = automovel;
     this.Plano = plano;
 }
示例#13
0
 private void ValidarSeEmailExiste(Anunciante anunciante)
 {
     if (this.repositorioAnunciante.ObterAnuncianteDeEmail(anunciante.Email) != null)
     {
         throw new Exception("Já existe um anunciante com o mesmo email.");
     }
 }
示例#14
0
        public void Atualizar_Anunciante_Valido_Email_Ja_Existente_Chamar_Repositorio_ObterObterAnuncianteDeEmail_Dispara_Exception()
        {
            Anunciante anunciante = new Anunciante()
            {
                Nome = "Teste",
                Email = "*****@*****.**",
                Telefone = "(11)1234-4321",
                DataNascimento = new DateTime(1988, 5, 12),
                Cidade = new Cidade()
            };

            repositorioAnuncianteMock.Setup(r => r.ObterAnuncianteDeEmail(anunciante.Email)).Returns(anunciante);

            target.Atualizar(anunciante);
            repositorioAnuncianteMock.Verify(r => r.ObterAnuncianteDeEmail(anunciante.Email));
        }
示例#15
0
        public void Atualizar_Anunciante_Valido_Menor_18_Anos_Dispara_Exception_1_Erro()
        {
            try
            {
                Anunciante anunciante = new Anunciante()
                {
                    Nome = "Teste",
                    Email = "*****@*****.**",
                    Telefone = "(11)1234-4321",
                    DataNascimento = DateTime.Now,
                    Cidade = new Cidade()
                };

                target.Atualizar(anunciante);
            }
            catch (Exception ex)
            {
                Assert.AreEqual(1, ex.Message.Split('\n').Where(e => !string.IsNullOrWhiteSpace(e)).Count());
                throw;
            }
        }
示例#16
0
 public void Atualizar(Anunciante anunciante)
 {
     this.ValidarAnunciante(anunciante);
     this.repositorioAnunciante.Atualizar(anunciante);
 }
示例#17
0
 public List<Anuncio> ObterAnunciosDoAnunciante(Anunciante anunciante)
 {
     return this.repositorioDeAnuncios.ObterAnunciosDoAnunciante(anunciante);
 }