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

Issue:
Melhorar format_cnpj e o seus testes
1. Chamar a função `is_valid` e formatar o cnpj, sem utilizar o método display.
Código referência:
https://github.com/brazilian-utils/brutils-python/blob/756f1267b78ed597a7b65fd344a8ae2c6bf6a0b9/brutils/cpf.py#L38-L48

2. Melhorar os testes da função format_cnpj:

Código referência:
https://github.com/brazilian-utils/brutils-python/blob/756f1267b78ed597a7b65fd344a8ae2c6bf6a0b9/tests/test_cpf.py#L47-L57

Pull request description:
Refatorando a função `cnpj.format` e melhorando seus testes
Alterações:
* Garante que a função `format` chama o método `is_valid` para validação do CNPJ e não utiliza o método display;
* Testes ajustados para a nova função (CNPJ);
* Alteração do código do `cpf.format` para definir o tamanho máximo do input

closes #115 

Patch:
diff --git a/brutils/cnpj.py b/brutils/cnpj.py
index 913a41e..0b7fd73 100644
--- a/brutils/cnpj.py
+++ b/brutils/cnpj.py
@@ -38,7 +38,13 @@ def format_cnpj(cnpj):  # type: (str) -> str
     Will format an adequately formatted numbers-only CNPJ string,
     adding in standard formatting visual aid symbols for display.
     """
-    return display(cnpj)
+
+    if not is_valid(cnpj):
+        return None
+
+    return "{}.{}.{}/{}-{}".format(
+        cnpj[:2], cnpj[2:5], cnpj[5:8], cnpj[8:12], cnpj[12:14]
+    )
 
 
 # CALCULATORS
diff --git a/brutils/cpf.py b/brutils/cpf.py
index ea93e75..e030ed7 100644
--- a/brutils/cpf.py
+++ b/brutils/cpf.py
@@ -45,7 +45,7 @@ def format_cpf(cpf):  # type: (str) -> str
     if not is_valid(cpf):
         return None
 
-    return "{}.{}.{}-{}".format(cpf[:3], cpf[3:6], cpf[6:9], cpf[9:])
+    return "{}.{}.{}-{}".format(cpf[:3], cpf[3:6], cpf[6:9], cpf[9:11])
 
 
 # OPERATIONS


Test patch:
diff --git a/tests/test_cnpj.py b/tests/test_cnpj.py
index 9b26234..25e7375 100644
--- a/tests/test_cnpj.py
+++ b/tests/test_cnpj.py
@@ -45,10 +45,18 @@ class CNPJ(TestCase):
         assert display("0000000000000") is None
 
     def test_format_cnpj(self):
-        assert format_cnpj("00000000000109") == "00.000.000/0001-09"
-        assert format_cnpj("00000000000000") is None
-        assert format_cnpj("0000000000000a") is None
-        assert format_cnpj("0000000000000") is None
+        with patch("brutils.cnpj.is_valid", return_value=True) as mock_is_valid:
+            # When cnpj is_valid, returns formatted cnpj
+            assert format_cnpj("01838723000127") == "01.838.723/0001-27"
+
+        # Checks if function is_valid_cnpj is called
+        mock_is_valid.assert_called_once_with("01838723000127")
+
+        with patch(
+            "brutils.cnpj.is_valid", return_value=False
+        ) as mock_is_valid:
+            # When cnpj isn't valid, returns None
+            assert format_cnpj("01838723000127") is None
 
     def test_validate(self):
         assert validate("34665388000161")