Repository: brazilian-utils/brutils-python (python)

Issue:
Formatação de CEPs
Implementar um utilitário que recebe um CEP apenas com dígitos e retorna o CEP com símbolos (ponto e traço)

Pull request description:
Feature: implementando o método `format_cep`
* função criada no arquivo cep.py;
* testes criados (e funcionado!) - no arquivo test_cep.py;
* documentação atualizada nos arquivos de readme em inglês e português;
* __init__.py também atualizado conforme implementação;

teste feito também no python, função de acordo com o esperado.

closes #120 




Patch:
diff --git a/README.md b/README.md
index 807b7e8..686d27d 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 d461943..9d9422f 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 e2f1aee..e51068c 100644
--- a/brutils/__init__.py
+++ b/brutils/__init__.py
@@ -12,5 +12,6 @@ from brutils.cnpj import (
 )
 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 0b17012..cd86408 100644
--- a/brutils/cep.py
+++ b/brutils/cep.py
@@ -5,6 +5,18 @@ from random import randint
 ############
 
 
+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
 ############
 


Test patch:
diff --git a/tests/test_cep.py b/tests/test_cep.py
index e023061..a2a2eca 100644
--- a/tests/test_cep.py
+++ b/tests/test_cep.py
@@ -11,12 +11,25 @@ path.insert(
 )
 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)