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