public void Seu_Email_Deve_Ser_Unico()
        {
            var emailJaExistente = "*****@*****.**";
            var gerenteUsuarios = new GerenteUsuarios(ctx);

            try
            {
                var usuariaParaEditar = ctx.Usuarios.Single(u => u.Id == 2);
                usuariaParaEditar.Email = emailJaExistente;

                gerenteUsuarios.ValidarAlterarUsuario(usuariaParaEditar);

                Assert.Fail("Deveria ter falhado");
            }
            catch (RegrasDeNegocioException rne)
            {
                var msg = rne.Erros.Where(x => x.Mensagem.Contains("já existe")).FirstOrDefault();
                Assert.IsNotNull(msg);
            }
        }
        public ActionResult Editar(UsuarioVM vm)
        {
            using (IVIADbContext contexto = new IVIADbContext())
            {
                GerenteUsuarios gerente = new GerenteUsuarios(contexto);
                Usuario usuario = new Usuario();
                usuario.Id = vm.Id;
                usuario.Nome = vm.Nome;
                usuario.Email = vm.Email;
                usuario.Senha = vm.Senha;

                try
                {
                    gerente.ValidarAlterarUsuario(usuario);

                    contexto.Entry<Usuario>(usuario).State = System.Data.EntityState.Modified;
                    contexto.SaveChanges();

                    RedirectToAction("Index");
                }
                catch (RegrasDeNegocioException ex)
                {
                    ex.CopiarPara(ModelState);
                    vm.Mensagem = "Erro";

                }
                return View(vm);
            }
        }