private void button2_Click(object sender, EventArgs e)
        {
            String  nombreRol = textBoxNombreRol.Text.Trim();
            Boolean activo    = checkBoxActivo.Checked;
            List <Funcionalidad> funcionalidades = new List <Funcionalidad>();
            RepositorioRol       repositorioRol  = new RepositorioRol();
            Rol rol = null;

            foreach (DataGridViewRow row in dataGridFuncionalidades.SelectedRows)
            {
                funcionalidades.Add((Funcionalidad)row.DataBoundItem);
            }

            rol = new Rol(0, nombreRol, activo, funcionalidades);

            //LA RESPONSABILIDAD DE VALIDAR EL INPUT LA DEJO EN LA INTERFAZ???
            //O MEJOR EN EL REPOSITORIO Y LAS MANEJO CON EXCEPCIONES???
            if (this.validoInput(this))
            {
                try
                {
                    repositorioRol.create(rol);
                    MessageBox.Show("Rol creado con éxito.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    this.limpiarPantalla();
                }
                //catch (ElementoYaExisteException exc)
                catch (Exception exc)
                {
                    MessageBox.Show(exc.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            else
            {
                MessageBox.Show("Ingrese nombre del Rol y seleccione sus Funcionalidades.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
        public void Test_Repo_Rol_Alta_Baja_Modificacion_Rol()
        {
            //INICIALIZO VARIABLES
            int                      idRolTest                = 0;
            RepositorioRol           repositorioRol           = new RepositorioRol();
            List <Funcionalidad>     funcionalidades          = new List <Funcionalidad>();
            RepositorioFuncionalidad repositorioFuncionalidad = new RepositorioFuncionalidad();

            //INICIALIZO EL ROL A CREAR
            String  nombreRol = "RolTest";
            Boolean activo    = false;

            funcionalidades.Add(repositorioFuncionalidad.getByDescripcion("ABMRol"));
            funcionalidades.Add(repositorioFuncionalidad.getByDescripcion("ABMUsuario"));
            funcionalidades.Add(repositorioFuncionalidad.getByDescripcion("ABMHotel"));
            funcionalidades.Add(repositorioFuncionalidad.getByDescripcion("ABMRegimenEstadia"));
            Rol rolTest = new Rol(0, nombreRol, activo, funcionalidades);

            //DOY DE ALTA EL ROL
            idRolTest = repositorioRol.create(rolTest);

            //RECUPERO EL ROL CREADO
            rolTest = repositorioRol.getById(idRolTest);

            //VALIDO
            //QUE AHORA HAY UN ROL MAS (SON 5 POR DEFAULT)
            Assert.AreEqual(6, repositorioRol.getAll().Count);
            //QUE TRAIGA LOS VALORES QUE CARGUE
            Assert.AreEqual(nombreRol, rolTest.getNombre());
            Assert.AreEqual(activo, rolTest.getActivo());
            Assert.AreEqual(4, rolTest.getFuncionalidades().Count);
            Assert.IsTrue(rolTest.getFuncionalidades().Exists(f => f.getDescripcion().Equals("ABMRol")));
            Assert.IsTrue(rolTest.getFuncionalidades().Exists(f => f.getDescripcion().Equals("ABMUsuario")));
            Assert.IsTrue(rolTest.getFuncionalidades().Exists(f => f.getDescripcion().Equals("ABMHotel")));
            Assert.IsTrue(rolTest.getFuncionalidades().Exists(f => f.getDescripcion().Equals("ABMRegimenEstadia")));

            //MODIFICACION DE ROL
            String  nuevoNombre = "NuevoNombre";
            Boolean nuevoEstado = true;

            funcionalidades.Clear();
            funcionalidades.Add(repositorioFuncionalidad.getByDescripcion("ABMReserva"));
            funcionalidades.Add(repositorioFuncionalidad.getByDescripcion("ABMCliente"));
            funcionalidades.Add(repositorioFuncionalidad.getByDescripcion("ABMHabitacion"));
            rolTest.setNombre(nuevoNombre);
            rolTest.setActivo(nuevoEstado);
            rolTest.setFuncionalidades(funcionalidades);

            //ACTUALIZACION DEL ROL EN LA BASE
            repositorioRol.update(rolTest);

            //RECUPERO EL ROL ACTUALIZADO
            rolTest = repositorioRol.getById(idRolTest);

            //VALIDO
            //QUE LA CANTIDAD DE LOS ROLES SIGUE SIENDO LA MISMA
            Assert.AreEqual(6, repositorioRol.getAll().Count);
            //QUE EL NOMBRE CAMBIO
            Assert.AreEqual(nuevoNombre, rolTest.getNombre());
            //QUE EL ESTADO CAMBIO
            Assert.AreEqual(nuevoEstado, rolTest.getActivo());
            //QUE LAS FUNCIONALIDADES CAMBIARON
            Assert.AreEqual(3, rolTest.getFuncionalidades().Count);
            Assert.IsTrue(rolTest.getFuncionalidades().Exists(f => f.getDescripcion().Equals("ABMReserva")));
            Assert.IsTrue(rolTest.getFuncionalidades().Exists(f => f.getDescripcion().Equals("ABMCliente")));
            Assert.IsTrue(rolTest.getFuncionalidades().Exists(f => f.getDescripcion().Equals("ABMHabitacion")));

            //TESTEO LA BAJA LOGICA
            repositorioRol.bajaLogica(rolTest);
            rolTest = repositorioRol.getById(idRolTest);
            Assert.AreEqual(false, rolTest.getActivo());

            //ELIMINACION DE ROL PARA MANTENER CONSISTENCIA DE LA BASE Y LA COHERENCIA DE LOS TESTS
            repositorioRol.delete(rolTest);

            //VALIDO QUE LA CANTIDAD DE ROLES VUELVA A 5
            Assert.AreEqual(5, repositorioRol.getAll().Count);
        }