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 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 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)); }