コード例 #1
0
        public void Gera_erro_se_numero_extensao_tiver_letras(Action criacao, Exception excecaoEsperada)
        {
            "Dada uma operação de criação de uma extensão"
            .Given(() => criacao = () => Contacto.CriaExtensao("123d"));

            "Quando a executarmos"
            .When(() => {
                try {
                    criacao();
                }
                catch (Exception e) {
                    excecaoEsperada = e;
                }
            });

            "A sua execução deve gerar erro"
            .Then(() => Assert.NotNull(excecaoEsperada));
        }
コード例 #2
0
        public void Mapeamento_funcionario_correto()
        {
            var tipoFuncionario = new TipoFuncionario(100, "Teste");
            var funcionario     = new FuncionarioDto {
                Id        = 1,
                Contactos = new List <Contacto> {
                    Contacto.CriaExtensao("1234")
                },
                Nif             = "123456789",
                Nome            = "Luis",
                TipoFuncionario = tipoFuncionario
            };

            new GestorTransacoesTestes().ExecutaTransacao((sess, tran) => {
                sess.Save(tipoFuncionario);
                sess.Flush();
                new PersistenceSpecification <FuncionarioDto>(sess)
                .VerifyTheMappings(funcionario);
                Assert.True(true);
            });
        }
コード例 #3
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));
        }
コード例 #4
0
        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));
        }
コード例 #5
0
        public void Consegue_adicionar_novos_contactos_aos_existentes(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, 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().Contain(comando.ContactosAdicionar));
        }
コード例 #6
0
        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());
        }
コード例 #7
0
        public void Interage_com_gerador_relatorios_para_carregar_ficha(FuncionariosController controlador, int id, ActionResult resultado)
        {
            var funcionario = new Funcionario {
                Id = 1, Nif = "123456789", Nome = "Luis Abreu", TipoFuncionario = new TipoFuncionario(1, "Docente"), Versao = 1, Contactos = new[] { Contacto.CriaExtensao("1234") }
            };
            var tipos = new[] { new TipoFuncionario(1, "Docente") };

            "Dado um controlador"
            .Given(() => controlador = _container.Create <FuncionariosController>());

            "e um id pesquisa"
            .And(() => id = 1);

            "e alguns mocks"
            .And(() => {
                var tran = _container.GetMock <ITransaction>();

                _container.GetMock <ISession>()
                .Setup(s => s.BeginTransaction())
                .Returns(tran.Object);
                tran.Setup(t => t.Dispose());

                _container.GetMock <IGestorRelatorios>()
                .Setup(g => g.ObtemFuncionario(id))
                .Returns(funcionario);

                _container.GetMock <IGestorRelatorios>()
                .Setup(g => g.ObtemTodosTiposFuncionarios())
                .Returns(tipos);
            });

            "Quando efetuamos uma pesquisa"
            .When(() => resultado = controlador.Funcionario(id));

            "Então devemos obter a vista e dados esperados"
            .Then(() => {
                resultado.Should().BeAssignableTo <ViewResult>();
                var model = ((ViewResult)resultado).Model as DadosFormularioFuncionario;
                model.Funcionario.Should().BeSameAs(funcionario);
                model.TiposFuncionario.Should().BeSameAs(tipos);
            });

            "E mocks devem ter sido usados"
            .And(() => {
                _container.GetMock <ISession>().VerifyAll();
                _container.GetMock <ITransaction>().VerifyAll();
            });
        }