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(); }
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); } }
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"); }
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(); }
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); } }
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); }
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!"); }
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!"); }
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); }
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!"); }
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); }
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)); }