示例#1
0
        public void SeCadastrarNovoObjetoDeTestesDeveSalvarCorretamente()
        {
            var adapter = CriarAdapterDoObjetoDeTestes();
            var conexao = new Conexao(ConnectionStringHelper.Consultar());
            var guid    = Guid.NewGuid();

            var novoRegistro = new ObjetoDeTestes()
            {
                Nome     = "Teste(" + guid.ToString() + ")",
                DataHora = DateTime.Now,
                Decimal  = 123.45M,
                Duplo    = 234.56
            };

            using (var transacao = conexao.IniciarTransacao())
                try
                {
                    adapter.Salvar(conexao, novoRegistro);
                    transacao.ConfirmarTransacao();
                }
                catch
                {
                    transacao.CancelarTransacao();
                    throw;
                }

            ValidarExistenciaRegistroTemporario(conexao, guid);

            ValidarExclusaoDoRegistroTemporario(conexao, guid);

            adapter.Dispose();
        }
示例#2
0
        public void SeInserirUmObjetoValidoNaoDeveGerarErro()
        {
            var repositorio = CriarRepositorioComDados(validar: true);

            repositorio.Quantidade
            .Should()
            .Be(0);

            var novo = new ObjetoDeTestes
            {
                Nome = "Nomes Corretos"
            };

            Action insercao = () => repositorio.Inserir(novo);

            insercao
            .ShouldNotThrow();

            Action validacao = () => repositorio.Validar(novo);

            validacao
            .ShouldNotThrow();

            repositorio.Quantidade
            .Should()
            .Be(1);
        }
        public void SeConsultarAChaveDeUmObjetoDeveRetornarOValorEsperado()
        {
            var dicionarioSimples = new Dicionario(typeof(ObjetoDeTestes));

            var objetoSimples = new ObjetoDeTestes()
            {
                Codigo = 123,
                Nome   = "Testes ABC"
            };

            dicionarioSimples.ConsultarValoresDaChave(objetoSimples)
            .Should().BeEquivalentTo(123);

            var dicionarioDupla = new Dicionario(typeof(ObjetoComChaveDupla));

            var objetoDupla = new ObjetoComChaveDupla()
            {
                ChaveBase           = 345,
                ChaveAutoIncremento = 789,
                Nome = "Testes CDF"
            };

            dicionarioDupla.ConsultarValoresDaChave(objetoDupla)
            .Should().BeEquivalentTo(345, 789);
        }
        public void SeRealizarConsulta1000VezesUtilizandoVarioDeveTrazerResultadoTodasAsVezes()
        {
            var contexto = ContextoHelper.Criar();
            var buscador = contexto.Buscar <ObjetoDeTestes>();

            for (int n = 0; n < 1000; n++)
            {
                var config = buscador.CriarQuery()
                             .DefinirLimite(1)
                             .AdicionarCondicao(s => s.Nome).Igual("Teste A");
                ObjetoDeTestes objeto = null;
                foreach (var item in buscador.Varios(config))
                {
                    objeto = item;
                }

                objeto
                .Should()
                .NotBeNull();

                objeto.Codigo
                .Should()
                .Be(1);
            }
        }
示例#5
0
        public void SeInserirUmObjetoInvalidoDeveGerarErroEaQuantidadeDeRegistrosNaoDeveSerModificada()
        {
            var repositorio = CriarRepositorioComDados(validar: true);

            var novo = new ObjetoDeTestes
            {
                Nome = "Pequeno"
            };

            Action insercao = () => repositorio.Inserir(novo);

            insercao
            .ShouldThrow <Exception>()
            .WithMessage("Favor informar no mínimo 10 caracteres para o nome!");

            repositorio.Quantidade
            .Should()
            .Be(6);

            Action validacao = () => repositorio.Validar(novo);

            validacao
            .ShouldThrow <Exception>()
            .WithMessage("Favor informar no mínimo 10 caracteres para o nome!");
        }
        public void SeClonarUmObjetoDeBancoDeveGerarCopiaComEstadoDeObjetoSempreNovo()
        {
            var funcionario = new ObjetoDeTestes()
            {
                Nome           = "João",
                EstadoEntidade = EstadosEntidade.NaoModificado
            };

            funcionario.EstadoEntidade
            .Should().Be(EstadosEntidade.NaoModificado);

            var copia = funcionario.Clone() as ObjetoDeTestes;

            copia
            .Should().NotBeNull();

            if (copia == null)
            {
                return;
            }

            copia.EstadoEntidade
            .Should().Be(EstadosEntidade.Novo);
            copia.Nome
            .Should().Be("João");
        }
示例#7
0
        public void SeCadastrarEDepoisAtualizarObjetoDeTestesDeveSerAtualizadoCorretamente()
        {
            var adapter = CriarAdapterDoObjetoDeTestes();
            var conexao = new Conexao(ConnectionStringHelper.Consultar());
            var guid    = Guid.NewGuid();

            var novoRegistro = new ObjetoDeTestes()
            {
                Nome     = "Teste(" + guid.ToString() + ")",
                DataHora = DateTime.Now,
                Decimal  = 123.45M,
                Duplo    = 234.56
            };

            using (var transacao = conexao.IniciarTransacao())
                try
                {
                    adapter.Salvar(conexao, novoRegistro);
                    transacao.ConfirmarTransacao();
                }
                catch
                {
                    transacao.CancelarTransacao();
                    throw;
                }

            ValidarExistenciaRegistroTemporario(conexao, guid);

            var registroExistente = (ObjetoDeTestes)novoRegistro.Clone();

            guid = Guid.NewGuid();

            registroExistente.Nome           = "Novo(" + guid.ToString() + ")";
            registroExistente.EstadoEntidade = EstadosEntidade.Modificado;

            using (var novaTransacao = conexao.IniciarTransacao())
                try
                {
                    adapter.Salvar(conexao, registroExistente);
                    novaTransacao.ConfirmarTransacao();
                }
                catch
                {
                    novaTransacao.CancelarTransacao();
                    throw;
                }

            ValidarExistenciaRegistroTemporario(conexao, guid);

            ValidarExclusaoDoRegistroTemporario(conexao, guid);

            adapter.Dispose();
        }
        public void SeAdicionarUmRegistroNoContextoESalvarOMesmoDeveSerEncontrado()
        {
            var contexto    = CriarContextoParaTestes();
            var repositorio = contexto.Repositorio <ObjetoDeTestes>();

            repositorio.Quantidade
            .Should().Be(0);

            repositorio.Buscar.Todos()
            .Should()
            .HaveCount(5);

            var objeto = new ObjetoDeTestes()
            {
                Codigo   = 100,
                Nome     = "Nome Que Pode Ser Inserido",
                Duplo    = 123.56,
                Decimal  = 234.67M,
                Logico   = true,
                DataHora = DateTime.Now
            };

            repositorio.Inserir(objeto);

            objeto.EstadoEntidade
            .Should()
            .Be(EstadosEntidade.Novo);

            repositorio.Quantidade
            .Should()
            .Be(1);

            repositorio.Buscar.Todos()
            .Should()
            .HaveCount(5);

            contexto.Salvar();

            objeto.EstadoEntidade
            .Should()
            .Be(EstadosEntidade.NaoModificado);

            objeto.Codigo
            .Should()
            .Be(6);

            repositorio.Buscar.Todos()
            .Should()
            .HaveCount(6);
        }
 private static void ValidarItemDaListaPadrao(int indice, ObjetoDeTestes item)
 {
     item.Codigo
     .Should().Be(indice + 1);
     if (indice == 0)
     {
         item.Nome
         .Should().Be("Nome Valido Para Adicao");
     }
     else
     {
         item.Nome
         .Should().Be("Novo Nome Valido Para Adicao");
     }
 }
        public void SeCadastrarEDepoisExcluirObjetoDeTestesDeveSerExcluidoCorretamente()
        {
            var adapter = CriarAdapterDoObjetoDeTestes();
            var conexao = new Conexao(ConnectionStringHelper.Consultar());
            var guid    = Guid.NewGuid();

            var registro = new ObjetoDeTestes()
            {
                Nome     = "Teste(" + guid.ToString() + ")",
                DataHora = DateTime.Now,
                Decimal  = 123.45M,
                Duplo    = 234.56
            };

            conexao.IniciarTransacao();
            try
            {
                adapter.Salvar(conexao, registro);
                conexao.ConfirmarTransacao();
            }
            catch
            {
                conexao.CancelarTransacao();
                throw;
            }

            ValidarExistenciaRegistroTemporario(conexao, guid);

            registro.EstadoEntidade = EstadosEntidade.Excluido;

            conexao.IniciarTransacao();
            try
            {
                adapter.Salvar(conexao, registro);
                conexao.ConfirmarTransacao();
            }
            catch
            {
                conexao.CancelarTransacao();
                throw;
            }

            ValidarExistenciaRegistroTemporario(conexao, guid, deveExistirQuantidade: 0);

            adapter.Dispose();
        }
示例#11
0
        public void SeCampoForPreenchidoCorretamenteNaoDeveGerarErro()
        {
            var objeto = new ObjetoDeTestes()
            {
                Nome = "Teste de Preenchimento Tranquilo"
            };
            var dicionario = new Dicionario(typeof(ObjetoDeTestes));
            var validador  = dicionario.Validador;

            Action validacao = () => validador.Validar(objeto);

            validacao.Should().NotThrow();

            var valido = validador.Valido(objeto).ToList();

            valido.Count
            .Should().Be(0);
        }
        public void SeRealizarConsulta1000VezesUtilizandoConsultarDeveTrazerResultadoTodasAsVezes()
        {
            var contexto    = ContextoHelper.Criar();
            var repositorio = contexto.Repositorio <ObjetoDeTestes>();

            for (int n = 0; n < 1000; n++)
            {
                ObjetoDeTestes objeto = repositorio.Consultar(1);

                objeto
                .Should()
                .NotBeNull();

                objeto.Codigo
                .Should()
                .Be(1);
            }
        }
示例#13
0
        public void SeValidarUmObjetoValidoAntesDeInserirDeveRetornarListaDeErrosVazia()
        {
            var repositorio = CriarRepositorioComDados();

            var novo = new ObjetoDeTestes
            {
                Nome = "Nome Considerado Correto"
            };

            var valido = repositorio.Valido(novo).ToList();

            valido
            .Should()
            .NotBeNull();

            valido.Count
            .Should()
            .Be(0);
        }
示例#14
0
        public void SeValidarPreenchimentoObrigatorioDeveGerarErroEspecifico()
        {
            var objeto = new ObjetoDeTestes()
            {
                Nome = null
            };
            var dicionario = new Dicionario(typeof(ObjetoDeTestes));
            var validador  = dicionario.Validador;

            Action validacao = () => validador.Validar(objeto);

            validacao.Should().Throw <CampoPossuiPreenchimentoObrigatorioException>();

            var valido = validador.Valido(objeto).ToList();

            valido.Count
            .Should().BeGreaterThan(0);
            valido[0].Should().Be("O campo [Nome] é de preenchimento obrigatório!");
        }
示例#15
0
        public void SeCampoForPreenchidoComTamanhoAcimaDoMaximoPermitidoDeveGerarErroEspecifico()
        {
            var objeto = new ObjetoDeTestes()
            {
                Nome = "12345678901234567890123456789012345678901234567890123456789012345678901234567890"
            };
            var dicionario = new Dicionario(typeof(ObjetoDeTestes));
            var validador  = dicionario.Validador;

            Action validacao = () => validador.Validar(objeto);

            validacao.Should().Throw <CampoPossuiTamanhoMaximoDePeenchimentoException>();

            var valido = validador.Valido(objeto).ToList();

            valido.Count
            .Should().BeGreaterThan(0);
            valido[0].Should().Be("O campo [Nome] permite ser preenchido com no máximo [50] caracteres!");
        }
示例#16
0
        public void SeDesativarAsValidacoesDeveSerPossivelInserirUmObjetoInvalido()
        {
            var repositorio = CriarRepositorioComDados();

            repositorio.DesativarValidacoes();

            var novo = new ObjetoDeTestes
            {
                Nome = "Pequeno"
            };

            Action insercao = () => repositorio.Inserir(novo);

            insercao
            .ShouldNotThrow();

            repositorio.Quantidade
            .Should()
            .Be(7);
        }
示例#17
0
        public void SeValidarUmObjetoInvalidoAntesDeInserirDeveRetornarListaDeErrosValida()
        {
            var repositorio = CriarRepositorioComDados();

            var novo = new ObjetoDeTestes
            {
                Nome = "Pequeno%"
            };

            var valido = repositorio.Valido(novo).ToList();

            valido
            .Should()
            .NotBeNull();

            valido.Count.Should().BeGreaterThan(1);

            valido
            .Should()
            .Contain("Favor informar no mínimo 10 caracteres para o nome!");
        }
示例#18
0
        public void SeAtivarAsValidacoesNaoDeveSerPossivelInserirUmObjetoInvalido()
        {
            var repositorio = CriarRepositorioComDados();

            repositorio.AtivarValidacoes();

            var novo = new ObjetoDeTestes
            {
                Nome = "Pequeno"
            };

            Action insercao = () => repositorio.Inserir(novo);

            insercao
            .ShouldThrow <Exception>()
            .WithMessage("Favor informar no mínimo 10 caracteres para o nome!");

            repositorio.Quantidade
            .Should()
            .Be(6);
        }
        private static ObjetoDeTestes ConsultarObjetoDeTestes()
        {
            var objeto = new ObjetoDeTestes
            {
                Filhos = new List <FilhoDoObjetoDeTestes>
                {
                    new FilhoDoObjetoDeTestes()
                    {
                        Id = 1, Nome = "A"
                    },
                    new FilhoDoObjetoDeTestes()
                    {
                        Id = 2, Nome = "B"
                    },
                    new FilhoDoObjetoDeTestes()
                    {
                        Id = 3, Nome = "C"
                    }
                }
            };

            return(objeto);
        }
示例#20
0
        public void SeConverterItemEmDataRowDeveGerarUmDataRowEsperado()
        {
            var dicionario = new Dicionario(typeof(ObjetoDeTestes));
            var tabela     = DataTableBuilder.CriarDataTable(dicionario);
            var agora      = DateTime.Now;

            var objeto = new ObjetoDeTestes()
            {
                Codigo       = 1,
                CodigoNulo   = 2,
                Nome         = "ABC",
                Duplo        = 123.56,
                DuploNulo    = 123.5,
                Decimal      = 234.67M,
                DecimalNulo  = 234.6M,
                Logico       = true,
                DataHora     = agora,
                DataHoraNulo = agora.AddDays(1)
            };

            var registro = DataTableBuilder.ConverterItemEmDataRow(tabela, objeto);

            registro.RowState
            .Should()
            .Be(DataRowState.Detached);

            registro["Codigo"]
            .Should()
            .Be(1);

            registro["CodigoNulo"]
            .Should()
            .Be(2);

            registro["Nome"]
            .Should()
            .Be("ABC");

            registro["Duplo"]
            .Should()
            .Be(123.56);

            registro["DuploNulo"]
            .Should()
            .Be(123.5);

            registro["Decimal"]
            .Should()
            .Be(234.67M);

            registro["DecimalNulo"]
            .Should()
            .Be(234.6M);

            registro["Logico"]
            .Should()
            .Be(true);

            registro["DataHora"]
            .Should()
            .Be(agora);

            registro["DataHoraNulo"]
            .Should()
            .Be(agora.AddDays(1));
        }