public void Trata_comando_alteracao_contactos_com_sucesso(ModificaContactosFuncionario comando, Funcionario funcionario, Processador processador, MsgGravacao msg) { "Dado um comando de ateração de contactos" .Given(() => comando = new ModificaContactosFuncionario(0, 0, null, new[] { Contacto.CriaExtensao("1234") })); "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 ActionResult AdicionaContacto(int id, int versao, string contacto) { IEnumerable <TipoFuncionario> tipos = null; MsgGravacao msg = null; using (var tran = _session.BeginTransaction()) { try { tipos = _session.QueryOver <TipoFuncionario>().List <TipoFuncionario>(); var ct = Contacto.Parses(contacto); Contract.Assert(ct != null, Msg.Contacto_invalido); var cmd = new ModificaContactosFuncionario(id, versao, null, new[] { ct }); msg = _processador.Trata(cmd); tran.Commit(); } catch (Exception ex) { ModelState.AddModelError("total", ex.Message); } } return(View("Funcionario", new DadosFormularioFuncionario { Funcionario = _session.Load <FuncionarioDto>(id), Novo = false, TiposFuncionario = tipos })); }
public MsgGravacao Trata(ModificaContactosFuncionario 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 Funciona_corretamente_mesmo_com_contactos_inexistentes(Funcionario funcionario, ModificaContactosFuncionario comando) { "Dado um funcionário existente" .Given(() => funcionario = Funcionario.CriaNovo(new CriaFuncionario("Luis", "123456789", new TipoFuncionario(1, "Docente"), new[] { Contacto.CriaExtensao("1234") }, 1))); "e um comando de modificação" .And(() => comando = new ModificaContactosFuncionario(1, 1, new Contacto[] { Contacto.CriaEmail("*****@*****.**"), Contacto.CriaExtensao("1234") }, null)); "Quando aplicamos o comando" .When(() => funcionario.Modifica(comando)); "Então devemos obter os novos contactos na lista de contactos" .Then(() => funcionario.Contactos.Should().NotContain(comando.ContactosRemover)); }
public void Nao_duplica_contactos(Funcionario funcionario, ModificaContactosFuncionario comando) { "Dado um funcionário existente" .Given(() => funcionario = Funcionario.CriaNovo(new CriaFuncionario("Luis", "123456789", new TipoFuncionario(1, "Docente"), new[] { Contacto.CriaTelefone("123123123") }, 1))); "e um comando de modificação" .And(() => comando = new ModificaContactosFuncionario(1, 1, null, new Contacto[] { Contacto.CriaEmail("*****@*****.**"), Contacto.CriaTelefone("123123123") })); "Quando aplicamos o comando" .When(() => funcionario.Modifica(comando)); "Então devemos obter os novos contactos na lista de contactos" .Then(() => funcionario.Contactos.Should().HaveCount(2).And.Contain(comando.ContactosAdicionar)); }
public void Modifica(ModificaContactosFuncionario comando) { Contract.Requires(comando != null); if (comando.Versao != _versao) { throw new InvalidOperationException(Msg.Objeto_modificado_por_outro_utilizador); } foreach (var contacto in comando.ContactosRemover) { _contactos.Remove(contacto); } foreach (var contacto in comando.ContactosAdicionar) { if (_contactos.Contains(contacto)) { break; } _contactos.Add(contacto); } }
public void Nao_funciona_com_versoes_diferentes(Funcionario funcionario, ModificaContactosFuncionario 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 ModificaContactosFuncionario(1, 1, new Contacto[] { Contacto.CriaEmail("*****@*****.**"), Contacto.CriaExtensao("1234") }, null)); "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 MsgGravacao Trata(ModificaContactosFuncionario comando) { Contract.Requires(comando != null); return(default(MsgGravacao)); }