diff --git a/brutils/__init__.py b/brutils/__init__.py index 0cbb3349..165da64f 100644 --- a/brutils/__init__.py +++ b/brutils/__init__.py @@ -48,7 +48,7 @@ # IBGE Imports from brutils.ibge.uf import ( convert_code_to_uf, - convert_text_to_uf, + convert_text_to_uf, ) # Legal Process Imports diff --git a/brutils/ibge/uf.py b/brutils/ibge/uf.py index 68d089a0..99bcbc7a 100644 --- a/brutils/ibge/uf.py +++ b/brutils/ibge/uf.py @@ -1,6 +1,8 @@ -from brutils.data.enums.uf import CODE_TO_UF, UF from unidecode import unidecode +from brutils.data.enums.uf import CODE_TO_UF, UF + + def convert_code_to_uf(code): # type: (str) -> str | None """ Converts a given IBGE code (2-digit string) to its corresponding UF (state abbreviation). @@ -31,18 +33,19 @@ def convert_code_to_uf(code): # type: (str) -> str | None return result -def convert_text_to_uf(state_name): # type: (str) -> str | None + +def convert_text_to_uf(state_name): # type: (str) -> str | None """ Converts a given Brazilian state full name to its corresponding UF code. - This function takes the full name of a Brazilian state and returns the corresponding - 2-letter UF code. It handles all Brazilian states and the Federal District. + This function takes the full name of a Brazilian state and returns the corresponding + 2-letter UF code. It handles all Brazilian states and the Federal District. Args: state_name (str): The full name of the state to be converted. Returns: - str or None: The UF code corresponding to the full state name, + str or None: The UF code corresponding to the full state name, or None if the full state name is invalid. Example: @@ -58,6 +61,6 @@ def convert_text_to_uf(state_name): # type: (str) -> str | None None """ - federal_units = {unidecode(i.value.upper()): i.name for i in UF} + federal_units = {unidecode(i.value.upper()): i.name for i in UF} return federal_units.get(unidecode(state_name.upper()), None) diff --git a/tests/ibge/test_uf.py b/tests/ibge/test_uf.py index 69d45549..cdf3d99d 100644 --- a/tests/ibge/test_uf.py +++ b/tests/ibge/test_uf.py @@ -19,19 +19,33 @@ def test_convert_code_to_uf(self): def test_convert_text_to_uf(self): # Testes para nomes válidos - self.assertEqual(convert_text_to_uf('São Paulo'), "SP") - self.assertEqual(convert_text_to_uf('Rio de Janeiro'), "RJ") - self.assertEqual(convert_text_to_uf('Minas Gerais'), "MG") - self.assertEqual(convert_text_to_uf('Distrito Federal'), "DF") - self.assertEqual(convert_text_to_uf('são paulo'), "SP") # Teste com minúsculas - self.assertEqual(convert_text_to_uf('riO de janeiRo'), "RJ") # Teste com misturas de maiúsculas e minúsculas - self.assertEqual(convert_text_to_uf('minas gerais'), "MG") # Teste com minúsculas - self.assertEqual(convert_text_to_uf('sao paulo'), "SP") # Teste sem acento - + self.assertEqual(convert_text_to_uf("São Paulo"), "SP") + self.assertEqual(convert_text_to_uf("Rio de Janeiro"), "RJ") + self.assertEqual(convert_text_to_uf("Minas Gerais"), "MG") + self.assertEqual(convert_text_to_uf("Distrito Federal"), "DF") + self.assertEqual( + convert_text_to_uf("são paulo"), "SP" + ) # Teste com minúsculas + self.assertEqual( + convert_text_to_uf("riO de janeiRo"), "RJ" + ) # Teste com misturas de maiúsculas e minúsculas + self.assertEqual( + convert_text_to_uf("minas gerais"), "MG" + ) # Teste com minúsculas + self.assertEqual( + convert_text_to_uf("sao paulo"), "SP" + ) # Teste sem acento + # Testes para nomes inválidos - self.assertIsNone(convert_text_to_uf('Estado Inexistente')) # Nome não existe - self.assertIsNone(convert_text_to_uf('')) # Nome vazio - self.assertIsNone(convert_text_to_uf('123')) # Nome com números - self.assertIsNone(convert_text_to_uf('São Paulo SP')) # Nome com sigla incluída - self.assertIsNone(convert_text_to_uf('A')) # Nome com letra não mapeada - self.assertIsNone(convert_text_to_uf('ZZZ')) # Nome com mais de 2 letras \ No newline at end of file + self.assertIsNone( + convert_text_to_uf("Estado Inexistente") + ) # Nome não existe + self.assertIsNone(convert_text_to_uf("")) # Nome vazio + self.assertIsNone(convert_text_to_uf("123")) # Nome com números + self.assertIsNone( + convert_text_to_uf("São Paulo SP") + ) # Nome com sigla incluída + self.assertIsNone(convert_text_to_uf("A")) # Nome com letra não mapeada + self.assertIsNone( + convert_text_to_uf("ZZZ") + ) # Nome com mais de 2 letras