import unittest from extractors.pdf_extractor import ( _extrair_construcoes, _extrair_inscricao, anos_venais_ausentes, anos_venais_para_revisao, ) class PdfExtractorTests(unittest.TestCase): def test_extrai_inscricao_nas_duas_ordens_do_pdf(self): self.assertEqual( _extrair_inscricao(["100006954Inscriçã 1ª DF"]), "100006954", ) self.assertEqual( _extrair_inscricao(["Inscrição 123456789 Núcleo / Divisão"]), "123456789", ) def test_ignora_inscricao_anterior_do_lote(self): self.assertEqual( _extrair_inscricao(["Inscrição Anterior 1252518\n100006954Inscriçã"]), "100006954", ) def test_extrai_construcao_com_tipo_em_duas_linhas(self): texto = """\ Área Construída 1 76,46 2012 2012 63-ALVENARIA (D) - EDIFICIOS DE 6 A 10 PAVIMENTOS 1-0% Não Sim Documento de Origem """ self.assertEqual( _extrair_construcoes([texto]), ["76,46 m² / 2012 / 63-ALVENARIA (D) - EDIFICIOS DE 6 A 10 PAVIMENTOS"], ) def test_identifica_anos_venais_ausentes_no_intervalo(self): self.assertEqual(anos_venais_ausentes(["2021", "2023", "2025"]), [2022, 2024]) self.assertEqual(anos_venais_ausentes(["2024", "2025", "2026"]), []) def test_marca_anos_repetidos_ou_com_linhas_extras_para_revisao(self): registros = [ ("2023", 3, "300.000,00"), ("2024", 2, "320.000,00"), ("2023", 3, "300.000,00"), ] self.assertEqual(anos_venais_para_revisao(registros), [2023, 2024]) def test_uma_linha_venal_por_ano_nao_exige_revisao(self): registros = [("2021", 1, "293.882,68"), ("2022", 1, "325.240,88")] self.assertEqual(anos_venais_para_revisao(registros), []) if __name__ == "__main__": unittest.main()