public void AtualizaRegistroComConcorrencia()
        {
            // Arrange
            EstudanteDominio oEstudanteDominio = null;
            Estudante oUsuario1_EstudanteA = null;
            Estudante oUsuario2_EstudanteA = null;

            // Act
            oEstudanteDominio = new EstudanteDominio();

            // usuario 1 seleciona estudante A
            oUsuario1_EstudanteA = oEstudanteDominio.Selecionar(2);

            // usuario 2 seleciona estudante A
            oUsuario2_EstudanteA = oEstudanteDominio.Selecionar(2);

            // usuario 1 edita e salva estudante A primeiro
            oUsuario1_EstudanteA.Nome = "TESTE CONCORRENCIA US1";
            oEstudanteDominio.Atualizar(oUsuario1_EstudanteA);

            // usuario 2 edita e salva estudante A depois (irá causar uma exceção de concorrencia)
            oUsuario2_EstudanteA.Nome = "TESTE CONCORRENCIA US2";
            oEstudanteDominio.Atualizar(oUsuario2_EstudanteA);

            oEstudanteDominio = null;
            oUsuario1_EstudanteA = null;
            oUsuario2_EstudanteA = null;
        }
        public void ExcluirRegistroUnicoRegistroComConcorrencia()
        {
            // Arrange
            EstudanteDominio oEstudanteDominio = null;
            Estudante oUS1_EstudanteA = null;
            Estudante oUS2_EstudanteA = null;
            Estudante oUS2_EstudanteExcluirA = null;

            // Act
            oEstudanteDominio = new EstudanteDominio();

            // usuario 1 e 2 selecionam o mesmo registro A
            oUS1_EstudanteA = oEstudanteDominio.Selecionar(2);
            oUS2_EstudanteA = oEstudanteDominio.Selecionar(2);

            // usuario 1 altera o registro A
            oUS1_EstudanteA.Nome = "US1 NOME ALTERADO";
            oEstudanteDominio.Atualizar(oUS1_EstudanteA);

            // usuario 2 tenta excluir o registro e recebe aviso de erro de concorrencia
            oUS2_EstudanteExcluirA = new Estudante();
            oUS2_EstudanteExcluirA.ID = oUS2_EstudanteA.ID;
            oUS2_EstudanteExcluirA.RowVersion = oUS2_EstudanteA.RowVersion;
            oEstudanteDominio.Excluir(oUS2_EstudanteExcluirA);

            oEstudanteDominio = null;
            oUS1_EstudanteA = null;
            oUS2_EstudanteA = null;
            oUS2_EstudanteExcluirA = null;
        }
        public void AtualizaRegistroUnico()
        {
            // Arrange
            EstudanteDominio oEstudanteDominio = null;
            Estudante oEstudante = null;
            Boolean isSucesso;

            // Act
            oEstudanteDominio = new EstudanteDominio();
            oEstudante = oEstudanteDominio.Selecionar(1);

            oEstudante.Nome = "Tiago Santos";
            oEstudante.Idade = 20;

            isSucesso = oEstudanteDominio.Atualizar(oEstudante);

            // Assert
            Assert.IsTrue(isSucesso);

            oEstudanteDominio = null;
            oEstudante = null;
        }
        public void AtualizaRegistroComConcorrencia_RegistroExcluido()
        {
            // Arrange
            EstudanteDominio oEstudanteDominio = null;
            Estudante oUsuario1_EstudanteA = null;
            Estudante oUsuario1_EstudanteExcluirA = null;
            Estudante oUsuario2_EstudanteA = null;

            // Act
            oEstudanteDominio = new EstudanteDominio();

            // usuario 1 e 2 seleciona estudante A
            oUsuario1_EstudanteA = oEstudanteDominio.Selecionar(6);
            oUsuario2_EstudanteA = oEstudanteDominio.Selecionar(6);

            // usuario 1 exclui o registro A primeiro
            oUsuario1_EstudanteExcluirA = new Estudante();
            oUsuario1_EstudanteExcluirA.ID = oUsuario1_EstudanteA.ID;
            oUsuario1_EstudanteExcluirA.RowVersion = oUsuario1_EstudanteA.RowVersion;
            oEstudanteDominio.Excluir(oUsuario1_EstudanteExcluirA);

            // usuario 2 edita e salva estudante A depois e recebe um aviso de concorrencia do banco
            oUsuario2_EstudanteA.Nome = "TESTE CONCORRENCIA US2";
            oEstudanteDominio.Atualizar(oUsuario2_EstudanteA);

            oEstudanteDominio = null;
            oUsuario1_EstudanteA = null;
            oUsuario2_EstudanteA = null;
        }
        public void AtualizaMultiplosRegistros()
        {
            // Arrange
            EstudanteDominio oEstudanteDominio = null;
            List<Estudante> oEstudanteList = null;
            Boolean isSucesso;

            // Act
            oEstudanteDominio = new EstudanteDominio();

            // selecionando e adicionando na lista
            oEstudanteList = new List<Estudante>()
            {
                  oEstudanteDominio.Selecionar(2)
                , oEstudanteDominio.Selecionar(3)
                , oEstudanteDominio.Selecionar(5)
            };

            // alterando valores
            oEstudanteList.Find(c => c.ID == 2).Nome = "Reginaldo Rossi";
            oEstudanteList.Find(c => c.ID == 3).Nome = "Mariana de Melo";
            oEstudanteList.Find(c => c.ID == 5).Nome = "Karine Roque";

            oEstudanteDominio = new EstudanteDominio();
            isSucesso = oEstudanteDominio.Atualizar(oEstudanteList);

            // Assert
            Assert.IsTrue(isSucesso);

            oEstudanteDominio = null;
            oEstudanteList = null;
        }
        public void ExcluirMultiplosRegistrosComConcorrencia()
        {
            // Arrange
            EstudanteDominio oEstudanteDominio = null;
            Estudante oUS1_EstudanteA = null;
            List<Estudante> EstudantesList = null;
            List<Estudante> oUS2_EstudantesExcluirList = null;

            // Act
            oEstudanteDominio = new EstudanteDominio(OpcaoRegistrosVisiveis.Todos);
            EstudantesList = oEstudanteDominio.Listar() as List<Estudante>;

            // usuario 1 seleciona o registro A para alteracao
            // usuario 2 seleciona diversos registros para exclusao, incluindo o registro A
            oUS1_EstudanteA = oEstudanteDominio.Selecionar(5);
            oUS2_EstudantesExcluirList = EstudantesList.Where(r => new int[] { 2, 3, 4, 5 }.Contains(r.ID)).ToList();

            // usuario 1 altera o registro A
            oUS1_EstudanteA.Nome = "US1 NOME ALTERADO";
            oEstudanteDominio.Atualizar(oUS1_EstudanteA);

            // usuario 2 tenta excluir os registros selecionados e confirmados recebe aviso de erro de concorrencia
            oEstudanteDominio.Excluir(oUS2_EstudantesExcluirList);

            oEstudanteDominio = null;
            oUS1_EstudanteA = null;
            EstudantesList = null;
            oUS2_EstudantesExcluirList = null;
        }