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");
        }
예제 #2
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();
        }