public void Start() { //forçando carregamento do assembly que contém os mappings do nh var novoUsuario = new NovoUsuarioCommand(aceitoMkt: true, email: "", nome: ""); Database.OpenSession(); }
public UsuarioRepresentation CriarNovoUsuario(NovoUsuarioCommand usuario) { //primeiro garantimos as regras de negócio ao instanciar novo usuário. //qualquer erro de negócio será informado para as camadas superiores como uma BusinessException var novoUsuario = new UsuarioDadosMinimos(usuario.Nome, usuario.Email, usuario.AceitoMkt); UsuarioRepresentation usuarioCriado = null; try { // durante a gravação deixamos as constraints do DB agirem. novoUsuario.Id = (int)Database.Session.Save(novoUsuario); //as camadas superiores (WEB/API) devem sempre receber uma representação web, jamais os objetos de domínio usuarioCriado = Database.Session.Get<UsuarioRepresentation>(novoUsuario.Id); } //Erro de negócio tem duas origens: //1. invariants (regras de negócio) da própria Entidade de negócio //2. db constraint: veja como ela é gerada em Ticket.API.Shared.NH.SQL*ExceptionConverter catch (BusinessException e) { _log.Debug(e); throw; } catch (Exception e) { _log.Error(e); BusinessExceptionCreator.ThrowBusinessExceptionWithResourcesMessage("ErroInesperadoInsert"); } return usuarioCriado; }
public void Deve_Criar_Usuario_Basico() { var novoUsuario = new NovoUsuarioCommand(aceitoMkt:true, email:"*****@*****.**",nome:"developer" ); //excluindo usuário pré existente Database.Session.Delete(@"from Usuario u where u.Email = '*****@*****.**'"); Database.Session.Flush(); //somente nos testes unitários é necessário gerenciar a transação, //já que os controllers básicos utilizam o action filter *UseTransactionsByDefaultAttribute using (var tx = Database.Session.BeginTransaction()) { var novo = new UsuarioService().CriarNovoUsuario(novoUsuario); tx.Commit(); Assert.IsTrue(novo.Id > 0); } }
public IHttpActionResult Novo(NovoUsuarioCommand novoUsuario) { if (!ModelState.IsValid) { return BadRequest(ModelState); } UsuarioRepresentation usuarioCriado = null; try { usuarioCriado = _usuarioService.CriarNovoUsuario(novoUsuario); } catch (BusinessException be) { ExceptionConversor.ComplementModelStateErrors(ModelState, be); return BadRequest(ModelState); } return GerarResponse(usuarioCriado); }