Exemple #1
0
        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
            });
        }
Exemple #4
0
        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);
            });
        }
Exemple #5
0
        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
            }));
        }
Exemple #7
0
 public MsgGravacao Trata(ModificaDadosGeraisFuncionario comando)
 {
     Contract.Requires(comando != null);
     return(default(MsgGravacao));
 }