public async Task Busque_colaborador_existente()
        {
            // Arrange
            var contexto    = new InMemoryDBContext().Crie();
            var contratoDAO = FabricGenericDAO <IContratoDao> .Crie(contexto);

            var colaboradorDAO = FabricGenericDAO <IColaboradorDAO> .Crie(contexto);

            var chave = Guid.NewGuid();

            var colaborador = new ColaboradorBuilder().CrieColaboradorSucesso(chave).Get;

            await contexto.AddAsync(colaborador);

            await contexto.SaveChangesAsync();

            var repository = new ColaboradorRepository(contratoDAO, colaboradorDAO);

            // Act
            var result = await repository.BusqueColaborador(chave);

            // Assert
            Assert.NotNull(result);
            Assert.Equal(chave, result.Id);
            Assert.True(result.Contratos.Any());
        }
        public async void BusqueTodosContratos()
        {
            var contexto    = new InMemoryDBContext().Crie();
            var contratoDAO = FabricGenericDAO <IContratoDao> .Crie(contexto);

            var colaboradorDAO = FabricGenericDAO <IColaboradorDAO> .Crie(contexto);

            var repository  = new ColaboradorRepository(contratoDAO, colaboradorDAO);
            var chave       = Guid.NewGuid();
            var colaborador = new ColaboradorBuilder().CrieColaboradorSucesso(chave).Get;
            await colaboradorDAO.AddAsync(colaborador);

            colaborador = new ColaboradorBuilder().CrieColaboradorSucesso(Guid.NewGuid()).Get;
            await colaboradorDAO.AddAsync(colaborador);

            colaborador = new ColaboradorBuilder().CrieColaboradorSucesso(Guid.NewGuid()).Get;
            await colaboradorDAO.AddAsync(colaborador);

            await contexto.SaveChangesAsync();

            var contratosArmazenados = repository.BusqueTodosContratos(chave);

            contratosArmazenados.ToList().ForEach(item => Assert.Equal(chave, item.ColaboradorId));
            Assert.True(contratosArmazenados.Count() == 1);
        }
        public async Task Selecionar_ocorrencia_de_um_contrato()
        {
            // Arrange
            var contexto    = new InMemoryDBContext().Crie();
            var colaborador = new ColaboradorBuilder().CrieColaboradorSucesso().Get;
            var contratoDAO = FabricGenericDAO <IContratoDao> .Crie(contexto);

            var colaboradorDAO = FabricGenericDAO <IColaboradorDAO> .Crie(contexto);

            var ocorrenciaDeFeriasDAO = FabricGenericDAO <IOcorrenciaDeFeriasDao> .Crie(contexto);

            var repository = new ColaboradorRepository(contratoDAO, colaboradorDAO);
            await repository.RealizeAdmissao(colaborador);

            var ferias = new OcorrenciaDeFerias(colaborador.Contratos.First(),
                                                colaborador.Contratos.First().DataInicio.AddYears(1),
                                                30,
                                                0);

            await ocorrenciaDeFeriasDAO.AddAsync(ferias);

            await contexto.SaveChangesAsync();

            var ocorrenciaFeriasRepository = new OcorrenciaDeFeriasRepository(ocorrenciaDeFeriasDAO);

            // act
            var result = await ocorrenciaFeriasRepository.ObtenhaOcorrenciasDoPeriodoAquisitivo(colaborador.Contratos.First().Id,
                                                                                                colaborador.Contratos.First().PeriodoAquisitivo);

            // Assert
            Assert.NotNull(result);
        }
        public async Task RealizeAdmissaoAsync()
        {
            var contexto    = new InMemoryDBContext().Crie();
            var colaborador = new ColaboradorBuilder().CrieColaboradorSucesso().Get;
            var contratoDAO = FabricGenericDAO <IContratoDao> .Crie(contexto);

            var colaboradorDAO = FabricGenericDAO <IColaboradorDAO> .Crie(contexto);

            var repository = new ColaboradorRepository(contratoDAO, colaboradorDAO);
            await repository.RealizeAdmissao(colaborador);

            await contexto.SaveChangesAsync();

            Assert.True(await colaboradorDAO.GetQueryable().CountAsync() > 0, "Não existe colaborador cadastrado");
            Assert.True(await contratoDAO.GetQueryable().CountAsync() > 0, "Não existe contrato cadastrado");
        }