Skip to content

Commit 58ee85b

Browse files
committed
Revisión con tests unitarios cortesía de @javi20gu
1 parent 64f1988 commit 58ee85b

File tree

4 files changed

+35
-18
lines changed

4 files changed

+35
-18
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ __pycache__/
44
*$py.class
55
Pipfile
66
Pipfile.lock
7+
.vscode/
78

89
# C extensions
910
*.so

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ La idea es hacer un pequeño gestor de clientes paso a paso añadiendo mejoras p
44

55
1. ~~[Desarrollo del prototipo funcional](https://github.com/hcosta/curso-gestor-clientes-python/tree/1.0)~~
66
2. ~~[Revisión utilizando clases estáticas](https://github.com/hcosta/curso-gestor-clientes-python/tree/2.0)~~
7-
3. Revisión añadiendo pruebas unitarias
7+
3. ~~[Revisión añadiendo pruebas unitarias](https://github.com/hcosta/curso-gestor-clientes-python/tree/3.0)~~
88
4. Revisión guardando datos en ficheros
99
5. Revisión guardando datos con SQLite
1010
6. Revisión añadiendo una interfaz gráfica

gestor/manager.py

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -55,16 +55,8 @@ def add():
5555

5656
@staticmethod
5757
def is_valid(dni: str):
58-
"""
59-
Hace diferentes validaciones en el campo dni
60-
>>> Manager.is_valid('48H') # No válido, en uso
61-
False
62-
>>> Manager.is_valid('X82') # No válido, incorrecto
63-
False
64-
>>> Manager.is_valid('21A') # Válido
65-
True
66-
"""
67-
if not re.match('[0-9]{2}[A-Z]', dni):
58+
""" Hace diferentes validaciones en el campo dni """
59+
if not re.match('[0-9]{2}[A-Z]$', dni):
6860
return False
6961
for client in Manager.clients:
7062
if client.dni == dni:
@@ -102,8 +94,3 @@ def edit():
10294
Manager.clients[i].apellido = helpers.input_text(2, 30)
10395
return True
10496
return False
105-
106-
107-
if __name__ == "__main__":
108-
import doctest
109-
doctest.testmod(extraglobs={'Manager': Manager})

tests/test_manager.py

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import unittest
22
from unittest.mock import patch
33

4-
from gestor.manager import Manager, Client
4+
from gestor.manager import Client, Manager
55

66

77
class TestManager(unittest.TestCase):
@@ -15,11 +15,40 @@ def setUp(self):
1515

1616
def testAddClient(self):
1717
add_client_inputs = ['Héctor', 'Costa', '39J']
18-
with patch('builtins.input', side_effect=add_client_inputs):
18+
with patch('builtins.input', side_effect=add_client_inputs):
1919
Manager.add()
2020
self.assertEqual(len(Manager.clients), 4)
2121
self.assertEqual(Manager.clients[-1].nombre, 'Héctor')
2222

23+
def testDeleteClient(self):
24+
cliente_a_eliminar = Manager.clients[0]
25+
delete_client_inputs = [cliente_a_eliminar.dni]
26+
self.assertEqual(len(Manager.clients), 3)
27+
with patch('builtins.input', side_effect=delete_client_inputs):
28+
Manager.delete()
29+
self.assertEqual(len(Manager.clients), 2)
30+
self.assertTrue(Manager.clients[0] != cliente_a_eliminar)
31+
self.assertEqual(Manager.clients[0].nombre, 'Manolo')
32+
self.assertEqual(Manager.clients[-1].nombre, 'Ana')
33+
34+
def testEditClient(self):
35+
edit_client_input = ['15J', 'Javier', 'Rosales']
36+
with patch('builtins.input', side_effect=edit_client_input):
37+
self.assertTrue(Manager.edit())
38+
self.assertEqual(Manager.clients[0].nombre, 'Javier')
39+
40+
def testFindClient(self):
41+
find_client_edit = ['15J']
42+
with patch('builtins.input', side_effect=find_client_edit):
43+
self.assertEqual(Manager.find(), (0, Manager.clients[0]))
44+
45+
def testDniIsValid(self):
46+
self.assertFalse(Manager.is_valid('48H'))
47+
self.assertFalse(Manager.is_valid('X82'))
48+
self.assertFalse(Manager.is_valid('23223S'))
49+
self.assertFalse(Manager.is_valid('13FF'))
50+
self.assertTrue(Manager.is_valid('21A'))
51+
2352

2453
if __name__ == '__main__':
2554
unittest.main()

0 commit comments

Comments
 (0)