88
99class ProyectosTests (unittest .TestCase ):
1010 def setUp (self ):
11- """Configura el entorno inicial simulando la persistencia de datos"""
12-
11+
1312 self .mock_persistencia = Mock (spec = ManejadorPersistencia )
1413 self .proyecto_service = ProyectoService (self .mock_persistencia )
1514
@@ -21,8 +20,7 @@ def setUp(self):
2120 ]
2221
2322 def test_excepciones_creacion_modelo_proyecto (self ):
24- """Valida que el modelo lance errores ante datos inválidos"""
25-
23+
2624 with self .assertRaises (ValueError ):
2725 Proyecto ("1" , "Sistema de asistencia por reconocimiento facial" , "Activo" )
2826
@@ -36,8 +34,7 @@ def test_excepciones_creacion_modelo_proyecto(self):
3634 Proyecto (1 , "Sistema de asistencia por reconocimiento facial" , "Otro Estado" )
3735
3836 def test_str_representacion_modelo_proyecto (self ):
39- """Verifica que el texto representativo del proyecto sea correcto"""
40-
37+
4138 proyecto_creado = Proyecto (1 , "Sistema de asistencia por reconocimiento facial" , "Activo" )
4239
4340 self .assertEqual (
@@ -46,8 +43,7 @@ def test_str_representacion_modelo_proyecto(self):
4643 )
4744
4845 def test_obtener_lista_proyectos (self ):
49- """Comprueba que el servicio liste todos los proyectos guardados"""
50-
46+
5147 self .mock_persistencia .cargar_datos .return_value = {
5248 "proyectos" : self .lista_proyectos_iniciales ,
5349 "empleados" : [],
@@ -65,7 +61,7 @@ def test_obtener_lista_proyectos(self):
6561 self .mock_persistencia .guardar_datos .assert_not_called ()
6662
6763 def test_agregar_nuevo_proyecto (self ):
68- """Verifica la inserción exitosa de un proyecto en persistencia"""
64+
6965
7066 datos = {
7167 "proyectos" : list (self .lista_proyectos_iniciales ),
@@ -94,8 +90,7 @@ def test_agregar_nuevo_proyecto(self):
9490 )
9591
9692 def test_actualizar_proyecto (self ):
97- """Confirma la modificación correcta de un proyecto por ID"""
98-
93+
9994 datos = {
10095 "proyectos" : list (self .lista_proyectos_iniciales ),
10196 "empleados" : [],
@@ -119,8 +114,7 @@ def test_actualizar_proyecto(self):
119114 )
120115
121116 def test_eliminar_proyecto (self ):
122- """Comprueba el borrado exitoso de un proyecto existente"""
123-
117+
124118 datos = {
125119 "proyectos" : list (self .lista_proyectos_iniciales ),
126120 "empleados" : [],
@@ -138,7 +132,7 @@ def test_eliminar_proyecto(self):
138132 self .assertFalse (any (p ["id" ] == 4 for p in datos ["proyectos" ]))
139133
140134 def test_obtener_por_id_proyecto (self ):
141- """Valida la búsqueda correcta de proyecto usando su ID"""
135+
142136
143137 self .mock_persistencia .cargar_datos .return_value = {
144138 "proyectos" : self .lista_proyectos_iniciales ,
@@ -154,8 +148,7 @@ def test_obtener_por_id_proyecto(self):
154148 self .assertEqual (resultado .nombre , "App de Turismo de El Salvador" )
155149
156150 def test_obtener_por_id_proyecto_no_existe (self ):
157- """Asegura que devuelva None buscando un ID no registrado"""
158-
151+
159152 self .mock_persistencia .cargar_datos .return_value = {
160153 "proyectos" : self .lista_proyectos_iniciales ,
161154 "empleados" : [],
@@ -168,8 +161,7 @@ def test_obtener_por_id_proyecto_no_existe(self):
168161 self .assertIsNone (resultado )
169162
170163 def test_actualizar_proyecto_solo_nombre (self ):
171- """Modifica parcialmente el proyecto cambiando solamente su nombre actual"""
172-
164+
173165 datos = {
174166 "proyectos" : list (self .lista_proyectos_iniciales ),
175167 "empleados" : [],
@@ -185,8 +177,7 @@ def test_actualizar_proyecto_solo_nombre(self):
185177 self .assertEqual (datos ["proyectos" ][0 ]["estado" ], "Activo" )
186178
187179 def test_actualizar_proyecto_solo_estado (self ):
188- """Modifica parcialmente el proyecto cambiando solamente su estado actual"""
189-
180+
190181 datos = {
191182 "proyectos" : list (self .lista_proyectos_iniciales ),
192183 "empleados" : [],
@@ -202,8 +193,7 @@ def test_actualizar_proyecto_solo_estado(self):
202193 self .assertEqual (datos ["proyectos" ][0 ]["estado" ], "Pausado" )
203194
204195 def test_actualizar_proyecto_nombre_vacio (self ):
205- """Rechaza la actualización si asignas un nombre vacío"""
206-
196+
207197 datos = {
208198 "proyectos" : list (self .lista_proyectos_iniciales ),
209199 "empleados" : [],
@@ -216,8 +206,7 @@ def test_actualizar_proyecto_nombre_vacio(self):
216206 self .proyecto_service .actualizar (1 , "" )
217207
218208 def test_actualizar_proyecto_nombre_no_string (self ):
219- """Evita actualizar nombres usando tipos de datos inválidos"""
220-
209+
221210 datos = {
222211 "proyectos" : list (self .lista_proyectos_iniciales ),
223212 "empleados" : [],
@@ -230,8 +219,7 @@ def test_actualizar_proyecto_nombre_no_string(self):
230219 self .proyecto_service .actualizar (1 , 123 )
231220
232221 def test_actualizar_proyecto_estado_invalido (self ):
233- """Deniega actualizaciones si usas estados no permitidos textualmente"""
234-
222+
235223 datos = {
236224 "proyectos" : list (self .lista_proyectos_iniciales ),
237225 "empleados" : [],
@@ -244,8 +232,7 @@ def test_actualizar_proyecto_estado_invalido(self):
244232 self .proyecto_service .actualizar (1 , estado = "Invalido" )
245233
246234 def test_actualizar_proyecto_no_existe (self ):
247- """Retorna False intentando actualizar un ID no existente"""
248-
235+
249236 datos = {
250237 "proyectos" : list (self .lista_proyectos_iniciales ),
251238 "empleados" : [],
@@ -259,7 +246,7 @@ def test_actualizar_proyecto_no_existe(self):
259246 self .assertFalse (resultado )
260247
261248 def test_eliminar_proyecto_no_existe (self ):
262- """Retorna False intentando eliminar un ID no existente"""
249+
263250 datos = {
264251 "proyectos" : list (self .lista_proyectos_iniciales ),
265252 "empleados" : [],
@@ -273,7 +260,6 @@ def test_eliminar_proyecto_no_existe(self):
273260 self .assertFalse (resultado )
274261
275262 def test_eliminar_proyecto_con_tareas_y_asignaciones (self ):
276- """Garantiza el borrado en cascada de dependencias vinculadas"""
277263
278264 datos = {
279265 "proyectos" : list (self .lista_proyectos_iniciales ),
0 commit comments