public static PontoFactory criarPontoFactory(IPontoDiaRepository pontoRepository = null, IFeriadoRepository feriadoRepository = null) { if (feriadoRepository == null) { feriadoRepository = new FeriadoMockRepository(); } return(criarPontoFactory(new FeriadoService(feriadoRepository), pontoRepository)); }
private RelatorioService criarRelatorioService(IPontoDiaRepository pontoRepository = null, IFeriadoRepository feriadoRepository = null, IJornadaTrabalhoRepository jornadaRepository = null) { if (pontoRepository == null) { pontoRepository = new PontoDiaMockRepository(); } if (feriadoRepository == null) { feriadoRepository = new FeriadoMockRepository(); } if (jornadaRepository == null) { jornadaRepository = new JornadaTrabalhoMockRepository(); } return(new RelatorioService(pontoRepository, new FeriadoService(feriadoRepository), jornadaRepository, new UnitOfWorkMock())); }
public void relatorioDeveRetornarFeriados() { var feriadoRepository = new FeriadoMockRepository(); var nomeFeriado = "Dia de festa"; var feriado = criarFeriadoEm(feriadoRepository, nomeFeriado, 1, 6, 2016); var relatorio = criarRelatorioService(null, feriadoRepository); var inicio = new DateTime(2016, 6, 1); var fim = new DateTime(2016, 6, 30); feriadoRepository.save(feriado); var calendario = relatorio.gerarRelatorio(funcionario, inicio, fim); var feriadosNoPeriodo = calendario.getFeriados(); Assert.AreEqual(1, feriadosNoPeriodo.Count); Assert.AreEqual(nomeFeriado, feriadosNoPeriodo[0].Nome); Assert.AreEqual(new DateTime(2016, 6, 1), feriadosNoPeriodo[0].Data); Assert.AreEqual(30, calendario.Dias.Count); }
public void relatorioDeveRetornarFeriadosTrabalhados() { //Arranging: Feriado var feriadoRepository = new FeriadoMockRepository(); var nomeFeriado = "Dia de festa"; var feriado = criarFeriadoEm(feriadoRepository, nomeFeriado, 1, 6, 2016); //Arranging: Dia de trabalho var pontoRepository = new PontoDiaMockRepository(); var dia = criarPontoTrabalhoDoDia(pontoRepository, feriadoRepository, 1, 6, 2016, 9); //Horário de entrada var pontoService = criarPontoService(pontoRepository, feriadoRepository, 1, 6, 2016, 18); //Horário de saída pontoService.encerrarDia(dia); //Arranging: Relatório Service var relatorio = criarRelatorioService(pontoRepository, feriadoRepository); var inicio = new DateTime(2016, 6, 1); var fim = new DateTime(2016, 6, 30); //Act var calendario = relatorio.gerarRelatorio(funcionario, inicio, fim); var feriadosNoPeriodo = calendario.getFeriados(); var pontosNoPeriodo = calendario.getDiasTrabalhados(); var feriadosTrabalhados = calendario.getFeriadosTrabalhados(); var diaTrabalhado = (pontosNoPeriodo[0].PontoDia as DiaTrabalho); //Assert Assert.AreEqual(30, calendario.Dias.Count); Assert.AreEqual(1, feriadosTrabalhados.Count); Assert.AreEqual(1, feriadosNoPeriodo.Count); Assert.AreEqual(nomeFeriado, feriadosNoPeriodo[0].Nome); Assert.AreEqual(new DateTime(2016, 6, 1), feriadosNoPeriodo[0].Data); Assert.AreEqual(1, pontosNoPeriodo.Count); Assert.AreEqual(new TimeSpan(9, 0, 0), diaTrabalhado.Inicio); Assert.AreEqual(new TimeSpan(18, 0, 0), diaTrabalhado.Fim); Assert.AreEqual(new TimeSpan(9, 0, 0), diaTrabalhado.calcularHorasTrabalhadas()); }
public void relatorioDeveContarHorasExtrasSeparandoPorValor() { #region Arranging: Feriado var feriadoRepository = new FeriadoMockRepository(); var nomeFeriado = "Dia de festa"; var feriado = criarFeriadoEm(feriadoRepository, nomeFeriado, 1, 6, 2016); #endregion #region Arranging: Dias de trabalho var pontoRepository = new PontoDiaMockRepository(); var horariosEntrada = new DataHoraMockListStrategy( new DateTime(2016, 6, 1, 10, 0, 0), //Feriado -> 100% new DateTime(2016, 6, 2, 10, 0, 0), //Quinta -> 75% new DateTime(2016, 6, 3, 10, 0, 0), //Sexta -> 75% new DateTime(2016, 6, 4, 10, 0, 0), //Sábado -> 75% new DateTime(2016, 6, 5, 10, 0, 0)); //Domingo -> 100% var horariosSaida = new DataHoraMockListStrategy(true, new DateTime(2016, 6, 1, 18, 0, 0), //Feriado -> 100% new DateTime(2016, 6, 2, 18, 0, 0), //Quinta -> 75% new DateTime(2016, 6, 3, 18, 0, 0), //Sexta -> 75% new DateTime(2016, 6, 4, 18, 0, 0), //Sábado -> 75% new DateTime(2016, 6, 5, 18, 0, 0)); //Domingo -> 100% var diasDeTrabalho = new List <DiaTrabalho>(); while (horariosEntrada.Count > 0) { diasDeTrabalho.Add( iniciarEncerrarDia(pontoRepository, feriadoRepository, horariosEntrada.getDataHoraAtual(), horariosSaida)); horariosSaida.dequeue(); } #endregion #region Arranging: Jornada de trabalho var jornadaRepository = new JornadaTrabalhoMockRepository(); var jornada = criarJornadaTrabalho(jornadaRepository); jornada.cadastrarDia(DayOfWeek.Monday, DayOfWeek.Friday, new TimeSpan(10, 0, 0), new TimeSpan(15, 0, 0), new TimeSpan(0, 0, 0)); jornadaRepository.save(jornada); #endregion //Arranging: Relatório Service var relatorio = criarRelatorioService(pontoRepository, feriadoRepository, jornadaRepository); var inicio = new DateTime(2016, 6, 1); var fim = new DateTime(2016, 6, 30); //Act var calendario = relatorio.gerarRelatorio(funcionario, inicio, fim); var feriadosNoPeriodo = calendario.getFeriados(); var diasTrabalhadosNoPeriodo = calendario.getDiasTrabalhados(); //Assert Assert.AreEqual(30, calendario.Dias.Count); Assert.AreEqual(1, feriadosNoPeriodo.Count); Assert.AreEqual(nomeFeriado, feriadosNoPeriodo[0].Nome); Assert.AreEqual(new DateTime(2016, 6, 1), feriadosNoPeriodo[0].Data); Assert.AreEqual(5, diasTrabalhadosNoPeriodo.Count); Assert.AreEqual(new TimeSpan(14, 0, 0), calendario.calcularHorasExtras(75)); Assert.AreEqual(new TimeSpan(16, 0, 0), calendario.calcularHorasExtras(100)); Assert.AreEqual(new TimeSpan(30, 0, 0), calendario.calcularHorasExtras()); }