diff --git a/README.md b/README.md index 807b7e80..686d27d7 100644 --- a/README.md +++ b/README.md @@ -46,6 +46,7 @@ False - [generate_cnpj](#generate_cnpj) - [CEP](#cep) - [is_valid_cep](#is_valid_cep) + - [format_cep](#format_cep) - [generate_cep](#generate_cep) ## CPF @@ -139,10 +140,20 @@ Verifica se o CEP é valido. Apenas números, formatados como string. Não verif ```python >>> from brutils import is_valid_cep ->>> is_valid_cep('88390000') +>>> is_valid_cep('01310200') True ``` +### format_cep + +Formata o CEP. Retorna None se o CEP for inválido. + +```python +>>> from brutils import format_cep +>>> format_cep('01310200') +'01310-200' +``` + ### generate_cep Gera um CEP válido aleatório. diff --git a/README_EN.md b/README_EN.md index d4619437..9d9422fa 100644 --- a/README_EN.md +++ b/README_EN.md @@ -45,7 +45,8 @@ False - [remove_symbols_cnpj](#remove_symbols_cnpj) - [generate_cnpj](#generate_cnpj) - [CEP](#cep) - - [is_valid_cep](#is_valid_cep) + - [is_valid_cep](#is_valid_cep) + - [format_cep](#format_cep) - [generate_cep](#generate_cep) ## CPF @@ -144,10 +145,20 @@ Check if CEP is valid. Numbers only, formatted as strings. Does not check if CEP ```python >>> from brutils import is_valid_cep ->>> is_valid_cep('88390000') +>>> is_valid_cep('01310200') True ``` +### format_cep + +Format CEP. Returns None if CEP is invalid. + +```python +>>> from brutils import format_cep +>>> format_cpf('01310200') +'01310-200' +``` + ### generate_cep Generate a valid random CEP. diff --git a/brutils/__init__.py b/brutils/__init__.py index e2f1aeec..e51068cf 100644 --- a/brutils/__init__.py +++ b/brutils/__init__.py @@ -12,5 +12,6 @@ ) from brutils.cep import ( is_valid as is_valid_cep, + format_cep, generate as generate_cep, ) diff --git a/brutils/cep.py b/brutils/cep.py index 0b170127..cd864083 100644 --- a/brutils/cep.py +++ b/brutils/cep.py @@ -5,6 +5,18 @@ ############ +def format_cep(cep): # type: (str) -> str + """ + Will format an adequately formatted numbers-only CEP string, + adding in standard formatting visual aid symbols for display. + """ + + if not is_valid(cep): + return None + + return "{}-{}".format(cep[:5], cep[5:8]) + + # OPERATIONS ############ diff --git a/tests/test_cep.py b/tests/test_cep.py index e023061d..a2a2eca0 100644 --- a/tests/test_cep.py +++ b/tests/test_cep.py @@ -11,12 +11,25 @@ ) from brutils.cep import ( is_valid, + format_cep, generate, ) from unittest import TestCase, main class CEP(TestCase): + def test_format_cep(self): + with patch("brutils.cep.is_valid", return_value=True) as mock_is_valid: + # When cep is_valid, returns formatted cep + assert format_cep("01310200") == "01310-200" + + # Checks if function is_valid_cnpj is called + mock_is_valid.assert_called_once_with("01310200") + + with patch("brutils.cep.is_valid", return_value=False) as mock_is_valid: + # When cep isn't valid, returns None + assert format_cep("013102009") is None + def test_is_valid(self): # When CEP is not string, returns False assert not is_valid(1)