Files
Laucha1312 aa9bc585fd 4
2026-06-04 15:22:45 -03:00

4.0 KiB

🃏 Machete de Tests — OnAPB

Resumen para la Defensa del Proyecto (Taller de Integración)

Este documento sirve como guía para explicarle al profesor qué estamos probando exactamente con cada comando de php artisan test.


🏗️ Conceptos Clave (Para responder si preguntan)

  • Feature Tests: Prueban una funcionalidad completa desde la perspectiva del usuario (ej: hacer login, crear un club).
  • DatabaseTransactions: Es un "Trait" que usamos en los tests para que cada prueba se envuelva en una transacción de base de datos y se haga un Rollback al final. Así, los datos de prueba nunca ensucian la base de datos real.
  • Assertions (Afirmaciones): Son las comprobaciones que hacemos, como assertStatus(200) (la página cargó bien) o assertDatabaseHas (el dato se guardó en la BD).

📂 Detalle de los Tests (Qué hace cada uno)

1. AuthTest.php (Autenticación)

  • Qué prueba: Que los 3 tipos de usuarios (Admin, Jugador, Aficionado) puedan entrar al sistema con sus credenciales y que el Logout funcione.
  • Escenario crítico: Verifica que el captcha de Cloudflare (Turnstile) sea sorteado correctamente en el entorno de pruebas.

2. AdminTest.php (Seguridad y Roles)

  • Qué prueba: El control de acceso.
    • Un visitante o un jugador no deben poder entrar al /admin (Error 403).
    • Un Súper Admin sí debe poder entrar y ver el "Panel de Control".
    • El Súper Admin puede crear un Club y este se guarda correctamente en la BD.

3. PaseTest.php (Lógica de Negocio — NUEVO)

  • Qué prueba: El flujo de traspaso de un jugador.
  • Escenario: Un Súper Admin aprueba un pase pendiente. El test verifica que:
    1. El estado del pase cambie a "Aprobado".
    2. El id_club_actual del jugador se actualice automáticamente al club de destino.

4. SoftDeleteTest.php (Recuperación ante fallos — NUEVO)

  • Qué prueba: Que el borrado sea "lógico" y no "físico".
  • Escenario: Al eliminar un Club o un Jugador, el test verifica que el registro siga existiendo en la base de datos pero con la columna deleted_at completa. Esto demuestra la capacidad de recuperación del sistema.

5. EventoQRTest.php (Generación de QRs)

  • Qué prueba: La funcionalidad estrella del sistema.
  • Escenario: Un aficionado solicita un QR para un partido. El test verifica que se genere el registro en la tabla qr_codes y que el sistema impida solicitar un segundo QR para el mismo evento (evita fraudes).

6. JugadorCreationTest.php (Validaciones)

  • Qué prueba: Reglas de integridad de datos.
  • Escenario: Intentar crear un jugador con un DNI que ya existe. El test verifica que el sistema devuelva un error amigable indicando a qué club pertenece ese DNI ya registrado.

7. CleanupTest.php (Mantenimiento)

  • Qué prueba: Que el sistema de limpieza automática funcione.
  • Escenario: Simula la limpieza de eventos viejos. Verifica que se borren los QRs (para ahorrar espacio) pero que el Evento (partido) se mantenga para el historial de torneos.

8. TFICorrectionsTest.php (Correcciones Finales — NUEVO)

  • Qué prueba: Las últimas mejoras solicitadas por los profesores.
  • Escenario:
    1. Verifica que los listados de administración estén ordenados de forma descendente (último creado, primero en verse).
    2. Verifica que la descarga de QRs en formato PDF funcione correctamente y devuelva el archivo esperado.
    3. Verifica que el Manual de Usuario sea accesible y se renderice correctamente en la web.
    4. Verifica la presencia del sistema de bloqueo de botones y validación proactiva en el panel.

🚀 Cómo ejecutar y mostrar

Si el profesor pide ver los tests en vivo:

  1. Abrir la terminal.
  2. Correr: php artisan test
  3. Explicar: "Instalamos una batería de 22 tests que cubren desde el login y la lógica de pases hasta las nuevas correcciones de ordenamiento, descarga de PDFs y documentación integrada. Esto asegura que el sistema sea extremadamente robusto para la entrega final."