public void Trata_comando_alteracao_dados_com_sucesso(ModificaDadosGeraisFuncionario comando, Funcionario funcionario, Processador processador, MsgGravacao msg) { "Dado um comando de ateração de contactos" .Given(() => comando = new ModificaDadosGeraisFuncionario(0, 0, "M", "123456789", new TipoFuncionario(1, "Docente"))); "um funcionário" .And(() => funcionario = Funcionario.CriaNovo(new CriaFuncionario("Luis", "123456789", new TipoFuncionario(1, "Docente")))); "e um processador" .And(() => processador = _container.Create <Processador>()); "E alguns mocks" .And(() => { var session = _container.GetMock <ISession>(); session.Setup(s => s.Load <Funcionario>(comando.Id)) .Returns(funcionario); session.Setup(s => s.Update(funcionario)); session.Setup(s => s.Flush()); }); "Quando tratamos o comando" .When(() => processador.Trata(comando)); "Então obtemos uma mensagem com informação" .Then(() => msg.Id.Should().Be(comando.Id)); "E os mocks foram usados" .And(() => _container.GetMock <ISession>().VerifyAll()); }
public void Modifica(ModificaDadosGeraisFuncionario comando) { Contract.Requires(comando != null); if (comando.Version != _versao) { throw new InvalidOperationException(Msg.Objeto_modificado_por_outro_utilizador); } _nome = comando.Nome; _nif = comando.Nif; _tipoFuncionario = comando.TipoFuncionario; }
public MsgGravacao Trata(ModificaDadosGeraisFuncionario comando) { var funcionario = _session.Get <Funcionario>(comando.Id); Contract.Assert(funcionario != null, Msg.Erro_carregar_funcionario); funcionario.Modifica(comando); _session.Update(funcionario); _session.Flush(); return(new MsgGravacao { Id = comando.Id, Versao = funcionario.Versao }); }
public void Modifica_dados_gerais_do_funcionario(Funcionario funcionario, ModificaDadosGeraisFuncionario comando) { "Dado um funcionário" .Given(() => funcionario = Funcionario.CriaNovo(new CriaFuncionario("Luis", "123456789", new TipoFuncionario(1, "Docente"), null, 1))); "E um comando de modificação de dados gerais" .And(() => comando = new ModificaDadosGeraisFuncionario(1, 1, "Luis Miguel", "215183517", new TipoFuncionario(2, "nORMAL"))); "Quando aplicamos o comando" .When(() => funcionario.Modifica(comando)); "Então devemos obter uma alteração de dados" .Then(() => { funcionario.Nome.Should().Be(comando.Nome); funcionario.Nif.Should().Be(comando.Nif); funcionario.TipoFuncionario.Should().Be(comando.TipoFuncionario); }); }
public void Nao_funciona_com_versoes_diferentes(Funcionario funcionario, ModificaDadosGeraisFuncionario comando, Exception excecaoEsperada) { "Dado um funcionário existente" .Given(() => funcionario = Funcionario.CriaNovo(new CriaFuncionario("Luis", "123456789", new TipoFuncionario(1, "Docente"), new[] { Contacto.CriaExtensao("1234") }))); "e um comando de modificação" .And(() => comando = new ModificaDadosGeraisFuncionario(1, 2, "ll", "123456789", new TipoFuncionario(1, "Docente"))); "Quando aplicamos o comando" .When(() => { try { funcionario.Modifica(comando); } catch (Exception ex) { excecaoEsperada = ex; } }); "Então devemos obter uma exceção" .Then(() => Assert.IsType <InvalidOperationException>(excecaoEsperada)); }
public ActionResult DadosGerais(int id, int versao, string nome, string nif, int tipoFuncionario) { var criarNovoFuncionario = id == 0 && versao == 0; IEnumerable <TipoFuncionario> tipos = null; FuncionarioDto funcionario = null; MsgGravacao msg = null; var novo = true; using (var tran = _session.BeginTransaction()) { try { tipos = _session.QueryOver <TipoFuncionario>().List <TipoFuncionario>(); var tipo = tipos.FirstOrDefault(t => t.Id == tipoFuncionario); Contract.Assert(tipo != null, Msg.Tipo_funcionario_inexistente); if (!criarNovoFuncionario) { var comando = new ModificaDadosGeraisFuncionario(id, versao, nome, nif, tipo); msg = _processador.Trata(comando); } else { var comando = new CriaFuncionario(nome, nif, tipo); msg = _processador.Trata(comando); novo = !msg.GravadaComSucesso(); id = msg.Id; } tran.Commit(); } catch (Exception ex) { ModelState.AddModelError("total", ex.Message); } } return(View("Funcionario", new DadosFormularioFuncionario { Funcionario = !criarNovoFuncionario || !novo ? _session.Load <FuncionarioDto>(id) : CriaFuncionarioDtoVazio(tipos), Novo = criarNovoFuncionario && novo, TiposFuncionario = tipos })); }
public MsgGravacao Trata(ModificaDadosGeraisFuncionario comando) { Contract.Requires(comando != null); return(default(MsgGravacao)); }