def test_create_from_temp_table_data_when_empenho_already_exists(self): self.dao = EmpenhosSOFCacheDao() empenho_temp = mommy.make(EmpenhoSOFCacheTemp, _fill_optional=True) self.dao.create_from_temp_table_obj(empenho_temp=empenho_temp) assert 1 == EmpenhoSOFCache.objects.count() self.dao.create_from_temp_table_obj(empenho_temp=empenho_temp) assert 1 == EmpenhoSOFCache.objects.count()
def get_empenhos_for_contratos_from_sof_api(): """ Este método tem como principal responsabilidade realizar a junção entre os dados de contratos disponibilizados pelo Airflow na tabela contratos_raw e capturar os dados de empenhos de acordo com o código do contrato e o ano de empenho. """ contratos_raw_dao = ContratosRawDao() empenhos_dao = EmpenhosSOFCacheDao() empenhos_temp_dao = EmpenhosSOFCacheTempDao() empenhos_failed_requests_dao = EmpenhosFailedRequestsDao() empenhos_temp_dao.erase_all() empenhos_failed_requests_dao.erase_all() print("Fetching empenhos from SOF API and saving to temp table") fetch_empenhos_from_sof_and_save_to_temp_table( contratos_raw_dao=contratos_raw_dao, empenhos_temp_dao=empenhos_temp_dao) while empenhos_failed_requests_dao.count_all() > 0: print("Retrying failed API requests") retry_empenhos_sof_failed_api_requests( contratos_raw_dao, empenhos_failed_requests_dao, empenhos_temp_dao) print("Verifying count of lines in temp table") verify_table_lines_count( empenhos_dao=empenhos_dao, empenhos_temp_dao=empenhos_temp_dao) print("Moving data from temp table to the real table") update_empenho_sof_cache_from_temp_table( empenhos_dao=empenhos_dao, empenhos_temp_dao=empenhos_temp_dao)
def test_generate_execucoes_contratos(): assert 0 == ExecucaoContrato.objects.count() empenhos_data = GENERATE_EXECUCOES_CONTRATOS_EMPENHOS_DATA for data in empenhos_data: mommy.make(EmpenhoSOFCache, **data) uc = GenerateExecucoesContratosUseCase( empenhos_dao=EmpenhosSOFCacheDao(), execucoes_dao=ExecucoesContratosDao(), modalidades_dao=ModalidadesContratosDao(), objetos_dao=ObjetosContratosDao(), fornecedores_dao=FornecedoresDao()) uc.execute() assert 2 == ExecucaoContrato.objects.count() assert 1 == ModalidadeContrato.objects.count() assert 1 == ObjetoContrato.objects.count() assert 1 == Fornecedor.objects.count()
def generate_execucoes_contratos_and_apply_fromto(): """ Método que gera as execuções (dados a serem exibidos na ferramenta) e aplica as junções dos arquivos, gerando ao final a planilha para download dos dados """ print("Generating execucões contratos") generate_execucoes_uc = GenerateExecucoesContratosUseCase( empenhos_dao=EmpenhosSOFCacheDao(), execucoes_dao=ExecucoesContratosDao(), modalidades_dao=ModalidadesContratosDao(), objetos_dao=ObjetosContratosDao(), fornecedores_dao=FornecedoresDao()) generate_execucoes_uc.execute() print("Applying from-to") apply_fromto_uc = ApplyCategoriasContratosFromToUseCase( execucoes_dao=ExecucoesContratosDao(), categorias_fromto_dao=CategoriasContratosFromToDao(), categorias_dao=CategoriasContratosDao()) apply_fromto_uc.execute() generate_xlsx_files()
def retry_failed_requests_and_update_sof_cache_table(): """ Executa as etapas pós download de empenhos (fetch_empenhos) do script `get_empenhos_for_contratos_from_sof_api`. Utilizado qdo acontece algum erro durante o processo, após os empenhos terem sido baixados. """ contratos_raw_dao = ContratosRawDao() empenhos_dao = EmpenhosSOFCacheDao() empenhos_temp_dao = EmpenhosSOFCacheTempDao() empenhos_failed_requests_dao = EmpenhosFailedRequestsDao() while empenhos_failed_requests_dao.count_all() > 0: print("Retrying failed API requests") retry_empenhos_sof_failed_api_requests( contratos_raw_dao, empenhos_failed_requests_dao, empenhos_temp_dao) print("Verifying count of lines in temp table") verify_table_lines_count( empenhos_dao=empenhos_dao, empenhos_temp_dao=empenhos_temp_dao) print("Moving data from temp table to the real table") update_empenho_sof_cache_from_temp_table( empenhos_dao=empenhos_dao, empenhos_temp_dao=empenhos_temp_dao)
def generate_xlsx_files(): print("Generating xlsx files") generate_xlsx_uc = GenerateXlsxFilesUseCase( empenhos_dao=EmpenhosSOFCacheDao(), data_handler=openpyxl) generate_xlsx_uc.execute()
def setUp(self): self.dao = EmpenhosSOFCacheDao()
class EmpenhosSOFCacheDaoTestCase(TestCase): def setUp(self): self.dao = EmpenhosSOFCacheDao() @patch.object(EmpenhoSOFCache.objects, 'all') def test_get_all(self, mock_all): mocked_contratos = [ Mock(spec=EmpenhoSOFCache), Mock(spec=EmpenhoSOFCache) ] mock_all.return_value = mocked_contratos ret = self.dao.get_all() assert ret == mocked_contratos mock_all.assert_called_once_with() @patch.object(EmpenhoSOFCache.objects, 'count') def test_count_all(self, mock_count): mock_count.return_value = 2 ret = self.dao.count_all() assert ret == 2 mock_count.assert_called_once_with() @patch.object(EmpenhoSOFCache.objects, 'create') def test_create(self, mock_create): empenho_data = EMPENHOS_DAO_CREATE_DATA empenho = mommy.prepare(EmpenhoSOFCache, **empenho_data) mock_create.return_value = empenho ret = self.dao.create(data=empenho_data) mock_create.assert_called_once_with(**empenho_data) assert ret == empenho @pytest.mark.django_db def test_create_from_temp_table_data(self): mocked_empenho = Mock(spec=EmpenhoSOFCache) self.dao.model = Mock(spec=EmpenhoSOFCache) self.dao.model.return_value = mocked_empenho empenho_temp = mommy.prepare(EmpenhoSOFCacheTemp, _fill_optional=True) empenho = self.dao.create_from_temp_table_obj( empenho_temp=empenho_temp) for field in empenho_temp._meta.fields: if field.primary_key is True: continue assert (getattr(empenho, field.name) == getattr(empenho_temp, field.name)) mocked_empenho.save.assert_called_once_with() @pytest.mark.django_db def test_create_from_temp_table_data_when_empenho_already_exists(self): self.dao = EmpenhosSOFCacheDao() empenho_temp = mommy.make(EmpenhoSOFCacheTemp, _fill_optional=True) self.dao.create_from_temp_table_obj(empenho_temp=empenho_temp) assert 1 == EmpenhoSOFCache.objects.count() self.dao.create_from_temp_table_obj(empenho_temp=empenho_temp) assert 1 == EmpenhoSOFCache.objects.count()