public void Deve_Entregar_Contratos_Vigentes_Nas_Competencias()
        {
            throw new NotImplementedException();
            //Arrange
            string jsonCompetencias = jsonCompetenciaMensalJaneiro;
            IServicoFaturamento servicoConfiguracoesMock         = LOMock.ConfigurarServicoFaturamentoMock(jsonCompetencias);
            IServicoRetaguarda  servicoRetaguardaMock            = LOMock.ConfiguraRetaguardaMock(servicoConfiguracoesMock);
            IEnumerable <IContratoDeRemuneracao>       contratos = ConfiguraContratosMock();
            Mock <IRepositorioDeContratoDeRemuneracao> repositorioContratosMock = ConfigurarRepositorioContratos(contratos);
            IEnumerable <IRegraDeRemuneracao>          regras = ConfiguraRegrasMock();
            Mock <IRepositorioDeRegras> repositorioRegrasMock = ConfigurarRepositorioRegras(regras);
            Mock <LawofficeContext>     mockContext           = new Mock <LawofficeContext>();

            // TODO mudar para lógica de descobridor
            //var gerenciador = new GerenciadorDeRequisicoesDeContrato(repositorioContratosMock.Object, repositorioRegrasMock.Object, servicoRetaguardaMock.Object);
            ////gerenciador.ConfiguraServicosAsync(mockContext.Object).Wait();

            ////Act
            //var taskLista = gerenciador.RequisicaoListaContratosVigentesEmAsync(new[] { "201801" });
            //taskLista.Wait();
            //IEnumerable<IContratoDeRemuneracao> results = taskLista.Result;

            ////Arrange
            //Assert.True(contratos.SequenceEqual(results));
        }
Exemplo n.º 2
0
        public static IEnumerable <object[]> CenariosComDescontoMaiorQueValorBruto()
        {
            List <object[]> casos = new List <object[]>();
            Dinheiro        zero  = Dinheiro.Zero;

            try
            {
                IFechamentoDeRemuneracao fechamentoAlvo = LOMock.ConfiguraFechamento(LOMock.ID_FECHAMENTO_MOCK, LOMock.ID_FAVORECIDO, Dinheiro.EmReais(200), Dinheiro.EmReais(200));
                var caso1 = new object[] { fechamentoAlvo, zero, zero };

                var caso2 = new object[] { fechamentoAlvo, Dinheiro.EmReais(100), zero };

                var caso3 = new object[] { fechamentoAlvo, Dinheiro.EmReais(300), zero };

                casos.Add(caso1);
                casos.Add(caso2);
                casos.Add(caso3);
            }
            catch (Exception ex)
            {
                throw ex;
            }

            //Nao permitir casos zerados
            return(casos.Where(caso => (!caso[1].Equals(zero) || !caso[2].Equals(zero)) && ((IFechamentoDeRemuneracao)caso[0]).ValorBruto < (Dinheiro)caso[1]));
        }
        public void Deve_Remunerar_Linearmente_Proporcional_Ao_Percentual_Configurado_Para_a_Regra()
        {
            //Arrange
            Random  rnd           = new Random();
            decimal multiplicador = rnd.Next(0, 100) / 100.0M;
            var     valorHora     = new Dinheiro(valor: 100M, moeda: Moeda.Real);
            Mock <ITabelaDePreco <int> > tabelaMock = GeraTabelaMock(valorHora);
            Profissional   favorecido    = LOMock.GeraProfissionalMock(id: 1, categoria: new Categoria(), nome: "LeMock");
            IFavorecimento favorecimento = LOMock.GeraFavorecimentoMock(new[] { favorecido });
            ParametrosDeRegraDeRemuneracao parametrosRegra1 = LOMock.GeraParametrosDeRegraDeRemuneracaoPorHoraMock(percentual: 100);
            ParametrosDeRegraDeRemuneracao parametrosRegra2 = LOMock.GeraParametrosDeRegraDeRemuneracaoPorHoraMock(percentual: 100 * multiplicador);
            IRegraDeRemuneracao            regra1           = LOMock.ConstroiRegraPorHora(parametrosRegra1, favorecimento, tabelaMock.Object);
            IRegraDeRemuneracao            regra2           = LOMock.ConstroiRegraPorHora(parametrosRegra2, favorecimento, tabelaMock.Object);

            Mock <IHoraPreProcessada> entregaMock = ConfiguraMockEntregaRemuneravel(5, favorecido);

            //Act
            IEnumerable <IRemuneracao> remuneracoesA = regra1.CalculaRemuneracoes(new IEntregaPreProcessada[] { entregaMock.Object });
            IEnumerable <IRemuneracao> remuneracoesB = regra2.CalculaRemuneracoes(new IEntregaPreProcessada[] { entregaMock.Object });
            IEnumerator <IRemuneracao> enumeratorA   = remuneracoesA.GetEnumerator();
            IRemuneracao RemuneracaoA = remuneracoesA.First();
            IEnumerator <IRemuneracao> enumeratorB = remuneracoesB.GetEnumerator();
            IRemuneracao RemuneracaoB = remuneracoesB.First();

            //Assert
            Assert.AreEqual(multiplicador * RemuneracaoA.ValorAjustado.Valor, RemuneracaoB.ValorAjustado.Valor);
        }
 public void Setup()
 {
     _context            = LOMock.ConfigurarMockContext();
     _retaguardaEndpoint = LOMock.ObtemEndpointRetaguarda();
     _configs            = LOMock.ConfiguraConfiguracoes();
     _idDominio          = LOMock.ConfiguraIdDominio();
 }
Exemplo n.º 5
0
        public async Task Deve_Adicionar_Nova_Entrada_De_Regra_No_Banco_Desenv()
        {
            //Arrange
            IRepositorioDeRegras  repo = TesteInfraService.ServiceProvider.GetService <IRepositorioDeRegras>();
            Mock <IFavorecimento> favorecimentoMock = new Mock <IFavorecimento>();

            favorecimentoMock.SetupAllProperties();
            Profissional funcionario1 = new Profissional(1, null, "Fernando");
            Profissional funcionario2 = new Profissional(2, null, "Bronze");
            Profissional funcionario3 = new Profissional(3, null, "Cinco");

            Profissional[] funcionarios = new Profissional[] { funcionario1, funcionario2, funcionario3 };
            ParametrosDeRegraDeRemuneracao parametros = LOMock.GeraParametrosDeRegraDeRemuneracaoPorHoraMock(percentual: 50, vigencia: new PeriodoSimples(new DateTime(2018, 05, 01), new DateTime(2018, 08, 24)));
            RegraPorHora regraHora = null;//new RegraPorHora(parametros);
            int          idInserido;

            //Act
            idInserido = await repo.InserirAsync(regraHora);

            throw new NotImplementedException();
            //IRegraDeRemuneracao[] regraObtida = await repo.ObterAsync(new int[] { idInserido });

            ////Assert
            //Assert.IsNotNull(regraObtida[0]);
            //Assert.AreEqual(regraHora.Tipo, regraObtida[0].Tipo);
        }
        public void Entrega_De_Favorecido_Deve_Ser_Considerada_Entrega_De_Beneficiario()
        {
            //Arrange
            Favorecido            favorecido = _favorecidos.ElementAt(new Random().Next(_favorecidos.Count() - 1));
            IEntregaPreProcessada entrega    = LOMock.ConfiguraMockEntrega(favorecido.Profissional, DateTime.Now);

            foreach (var favorecimento in _favorecimentos)
            {
                //Assert
                Assert.DoesNotThrow(() => favorecimento.BeneficiarioDaEntregaEhFavorecido(entrega), "{0} lança uma exceção ao tentar checar se a entrega é de beneficiário", favorecimento.Tipo.Id);
                Assert.IsTrue(favorecimento.BeneficiarioDaEntregaEhFavorecido(entrega), "{0} não define corretamente se a entrega é de beneficiário", favorecimento.Tipo.Id);
            }
        }
        private static List <Profissional> GeraProfissionaisComTodasAsCombinacoesDeIds(int[] idsEntidadesPrincipais, int[] idsEntidadesSecundarias, List <Categoria> categorias)
        {
            List <Profissional> profissionais = idsEntidadesPrincipais.Select(id => LOMock.ConfiguraMockFuncionario(id, "Berto", categorias.First(cat => cat.IdCategoria == id))).ToList();

            profissionais.AddRange(idsEntidadesSecundarias.Select(id => LOMock.ConfiguraMockFuncionario(id, "Berto", categorias.First(cat => cat.IdCategoria == id))).ToList());

            var ids = from id in idsEntidadesPrincipais
                      join id2 in idsEntidadesSecundarias on 1 equals 1
                      select new Tuple <int, int>(id, id2);

            profissionais.AddRange(ids.Select(id => LOMock.ConfiguraMockFuncionario(id.Item1, "Berto", categorias.First(cat => cat.IdCategoria == id.Item2))).ToList());
            profissionais.AddRange(ids.Select(id => LOMock.ConfiguraMockFuncionario(id.Item2, "Berto", categorias.First(cat => cat.IdCategoria == id.Item1))).ToList());
            return(profissionais);
        }
        internal static IEnumerable <IFavorecimento> ObtemFavorecimentosConfigurados()
        {
            List <Categoria>    categorias    = GeraCategoriasComTodasAsCombinacoesDeIds(idsEntidadesPrincipais, idsEntidadesSecundarias);
            List <Profissional> profissionais = GeraProfissionaisComTodasAsCombinacoesDeIds(idsEntidadesPrincipais, idsEntidadesSecundarias, categorias);

            List <IFavorecimento> favorecimentos = new List <IFavorecimento>();

            _servicoFuncionario = LOMock.ConfiguraServicoProfissionais(profissionais);
            ParametrosDeFavorecimento parametros = GeraParametrosDeFavorecimento(idsEntidadesPrincipais, idsEntidadesSecundarias);

            favorecimentos.Add(CriarFavorecimentoPorLista(parametros));
            favorecimentos.Add(CriarFavorecimentoPorCategoria(parametros));

            return(favorecimentos);
        }
Exemplo n.º 9
0
        public async Task Deve_Vincular_Regras_A_Contrato()
        {
            //Arrange
            IRepositorioDeContratoDeRemuneracao repoContrato = TesteInfraService.ServiceProvider.GetService <IRepositorioDeContratoDeRemuneracao>();
            IRepositorioDeRegras  repoRegra         = TesteInfraService.ServiceProvider.GetService <IRepositorioDeRegras>();
            Mock <IFavorecimento> favorecimentoMock = new Mock <IFavorecimento>();

            favorecimentoMock.SetupAllProperties();
            Profissional funcionario1 = new Profissional(1, null, "Fernando");
            Profissional funcionario2 = new Profissional(2, null, "Bronze");
            Profissional funcionario3 = new Profissional(3, null, "Cinco");

            Profissional[] funcionarios = new Profissional[] { funcionario1, funcionario2, funcionario3 };
            ParametrosDeRegraDeRemuneracao parametros = LOMock.GeraParametrosDeRegraDeRemuneracaoPorHoraMock(percentual: 50, vigencia: new PeriodoSimples(new DateTime(2018, 05, 01), new DateTime(2018, 08, 24)));
            RegraPorHora regraHora1 = null;//new RegraPorHora(parametros);

            parametros = LOMock.GeraParametrosDeRegraDeRemuneracaoPorHoraMock(percentual: 60, vigencia: new PeriodoSimples(new DateTime(2018, 06, 01), new DateTime(2018, 08, 24)));
            RegraPorHora regraHora2 = null;//new RegraPorHora(parametros);

            parametros = LOMock.GeraParametrosDeRegraDeRemuneracaoPorHoraMock(percentual: 70, vigencia: new PeriodoSimples(new DateTime(2018, 07, 01), new DateTime(2018, 08, 24)));
            RegraPorHora          regraHora3     = null;// new RegraPorHora(parametros);
            ContratoDeRemuneracao contratoCriado = new ContratoDeRemuneracao(new PeriodoSimples(new DateTime(2018, 03, 01), new DateTime(2018, 04, 01)));

            //Act
            List <int> idsRegra = new List <int>
            {
                { await repoRegra.InserirAsync(regraHora1) },
                { await repoRegra.InserirAsync(regraHora2) },
                { await repoRegra.InserirAsync(regraHora3) }
            };
            int idContrato = await repoContrato.InserirAsync(contratoCriado);

            await repoContrato.AtualizaVinculosAsync(idContrato, idsRegra.ToArray());

            IContratoDeRemuneracao[] contratoObtido = await repoContrato.ObterAsync(new int[] { idContrato });

            IRegraDeRemuneracao[]             regrasObtidas    = (await repoRegra.ObterAsync(idsRegra.ToArray())).Select(p => p.Tipo.Construtor(null, null).ComParametros(p).ComFavorecimento(favorecimentoMock.Object).Construir()).ToArray();
            IEnumerable <IRegraDeRemuneracao> regrasVinculadas = contratoObtido[0].Regras;

            //Assert
            Assert.AreEqual(idContrato, contratoObtido[0].Id);
            Assert.IsNotNull(regrasVinculadas);
            Assert.IsTrue(regrasVinculadas.Count() > 0);
        }
        public void Deve_Remunerar_Favorecido_Conforme_Tabela()
        {
            //Arrange
            Profissional   favorecido               = LOMock.GeraProfissionalMock(id: 1, categoria: new Categoria(), nome: "LeMock");
            IFavorecimento favorecimento            = LOMock.GeraFavorecimentoMock(new[] { favorecido });
            var            valorHora                = new Dinheiro(valor: 100M, moeda: Moeda.Real);
            Mock <ITabelaDePreco <int> > tabelaMock = GeraTabelaMock(valorHora);

            ParametrosDeRegraDeRemuneracao parametrosRegra = LOMock.GeraParametrosDeRegraDeRemuneracaoPorHoraMock(percentual: 100M);

            IRegraDeRemuneracao       regra   = LOMock.ConstroiRegraPorHora(parametrosRegra, favorecimento, tabelaMock.Object);
            Mock <IHoraPreProcessada> entrega = ConfiguraMockEntregaRemuneravel(5, favorecido);

            //Act
            IEnumerable <IRemuneracao> remuneracoes = regra.CalculaRemuneracoes((new IEntregaPreProcessada[] { entrega.Object }));
            IRemuneracao Remuneracao = remuneracoes.First();

            //Assert
            Assert.AreEqual(favorecido.Id, Remuneracao.IdFavorecido);
            Assert.AreEqual(5 * valorHora.Valor, Remuneracao.ValorAjustado.Valor);
        }
        public void Nao_Remunerar_Entregas_De_Funcionarios_Que_Nao_Sao_Favorecidos()
        {
            //Arrange
            Profissional   favorecido               = LOMock.GeraProfissionalMock(id: 1, categoria: new Categoria(), nome: "LeMock");
            IFavorecimento favorecimento            = LOMock.GeraFavorecimentoMock(new[] { favorecido });
            Profissional   naoFavorecido            = LOMock.GeraProfissionalMock(id: 2, categoria: new Categoria(), nome: "LeNaoMock");
            var            valorHora                = new Dinheiro(valor: 100M, moeda: Moeda.Real);
            Mock <ITabelaDePreco <int> > tabelaMock = GeraTabelaMock(valorHora);

            var parametrosRegra = LOMock.GeraParametrosDeRegraDeRemuneracaoPorHoraMock();
            Mock <IHoraPreProcessada> entregaDeFavorecido    = ConfiguraMockEntregaRemuneravel(5, favorecido);
            Mock <IHoraPreProcessada> entregaDeNaoFavorecido = ConfiguraMockEntregaRemuneravel(5, naoFavorecido);

            IRegraDeRemuneracao regra = LOMock.ConstroiRegraPorHora(parametrosRegra, favorecimento, tabelaMock.Object);
            //Act
            IEnumerable <IRemuneracao> remuneracoes = regra.CalculaRemuneracoes(new IEntregaPreProcessada[] { entregaDeFavorecido.Object, entregaDeNaoFavorecido.Object });


            //Assert
            Assert.That(remuneracoes.Select(rem => rem.IdFavorecido), Has.No.Member(naoFavorecido.Id));
        }
Exemplo n.º 12
0
 private void Initialize(IFechamentoDeRemuneracao fechamento)
 {
     _repositorio = LOMock.ConfiguraRepositorioDeRemuneracoesParaFechamento(fechamento, NUMERO_DE_FECHAMENTOS_ADICIONAIS);
     _diretor     = new DiretorDeRevisao(_repositorio, LOMock.ConfiguraLoggerSimples());
 }
        internal static IEnumerable <Favorecido> GeraFavorecidos()
        {
            List <Categoria>    categorias    = GeraCategoriasComTodasAsCombinacoesDeIds(idsEntidadesPrincipais, idsEntidadesSecundarias);
            List <Profissional> profissionais = GeraProfissionaisComTodasAsCombinacoesDeIds(idsEntidadesPrincipais, idsEntidadesSecundarias, categorias);

            Favorecido[] favorecidos          = profissionais.Where(prof => idsEntidadesPrincipais.Contains(prof.Id) && idsEntidadesPrincipais.Contains(prof.Id)).Select(prof => LOMock.ConfiguraMockFavorecido(prof, new PeriodoSimples())).ToArray();
            Favorecido[] favorecidosExcluidos = profissionais.Where(prof => idsEntidadesSecundarias.Contains(prof.Id) && idsEntidadesSecundarias.Contains(prof.Id)).Select(prof => LOMock.ConfiguraMockFavorecido(prof, new PeriodoSimples())).ToArray();

            return(favorecidos);
        }
Exemplo n.º 14
0
 public void SetUp()
 {
     _context  = LOMock.ConfigurarMockContext();
     _endpoint = Constantes.LOCAL_URL_SERVICOS;
 }