Saltar al contenido principal

🧪 Guía de Pruebas - Módulo 3: Teams & Evaluation

Fecha: 31 de diciembre, 2025
Estado: ✅ Core y UI completados


📋 Requisitos Previos

Usuarios Necesarios

Necesitas crear los siguientes usuarios con sus respectivos roles:

  1. ADMIN (1 usuario)

    • Email: admin@test.com (o el que prefieras)
    • Rol: ADMIN
    • Cómo crearlo: Usa el script scripts/create-admin.ts o manualmente en la DB
  2. ORGANIZER (1 usuario)

    • Email: organizer@test.com
    • Rol: ORGANIZER
    • Cómo crearlo: Regístrate normalmente y cambia el rol a ORGANIZER desde /admin/users
  3. JUDGE (2-3 usuarios)

    • Email: judge1@test.com, judge2@test.com, etc.
    • Rol: JUDGE
    • Cómo crearlo: Regístrate normalmente y cambia el rol a JUDGE desde /admin/users
  4. PARTICIPANT (3-5 usuarios)

    • Email: participant1@test.com, participant2@test.com, etc.
    • Rol: PARTICIPANT (por defecto)
    • Cómo crearlo: Regístrate normalmente

🎯 Flujo de Pruebas Completo

FASE 1: Preparación (ORGANIZER/ADMIN)

  1. Iniciar sesión como ORGANIZER o ADMIN

    • Email: organizer@test.com o admin@test.com
    • Ir a: /dashboard
  2. Crear un Hackathon

    • Ir a: /admin/hackathons/create (enlace en navbar: "Crear Hackathon")
    • Completar formulario:
      • Nombre: "Hackathon de Prueba"
      • Slug: hackathon-prueba
      • Descripción: "Un hackathon para probar el sistema"
      • Fechas importantes:
        • Apertura Registro: HOY (para poder registrarse)
        • Cierre Registro: MAÑANA
        • Inicio: MAÑANA + 1 día
        • Fin: MAÑANA + 2 días
        • Deadline Submissions: MAÑANA + 2 días (mismo día que fin)
        • Inicio Evaluación: MAÑANA + 3 días
        • Fin Evaluación: MAÑANA + 4 días
      • Tamaño equipo: Min 1, Max 5
      • Agregar al menos 2 criterios de evaluación
    • Click en "Crear Hackathon"
    • ✅ Debería redirigir a /admin/hackathons/hackathon-prueba/dashboard
  3. Publicar el Hackathon

    • En el dashboard, click en "Publicar Hackathon" (si está en DRAFT)
    • O ir a la página pública: /hackathons/hackathon-prueba
    • Click en "Publicar Hackathon" (botón visible solo para ORGANIZER/ADMIN)
  4. Verificar que el hackathon está en REGISTRATION

    • El estado debería cambiar a "Abierto a Registro"
    • ✅ Verificar en la página pública

FASE 2: Registro y Equipos (PARTICIPANT)

  1. Iniciar sesión como PARTICIPANT 1

    • Email: participant1@test.com
    • Ir a: /hackathons (enlace en navbar)
    • ✅ Debería ver el hackathon "Hackathon de Prueba"
  2. Registrarse en el Hackathon

    • Click en el hackathon para ver detalles
    • Click en "Registrarse en este Hackathon"
    • ✅ Debería mostrar "✅ Estás registrado en este hackathon"
  3. Crear un Equipo

    • En la página de detalle del hackathon, debería aparecer sección "Acciones"
    • Click en "Crear Equipo"
    • Completar:
      • Nombre: "Equipo Innovador"
      • Descripción: "Un equipo para innovar"
    • Click en "Crear Equipo"
    • ✅ Debería mostrar el código de invitación (ej: ABC123)
    • ¡IMPORTANTE! Copiar este código
  4. Ver Detalle del Equipo

    • Click en "Volver al Hackathon"
    • En la sección "Acciones", debería aparecer "Ya perteneces a un equipo"
    • Click en "Ver mi equipo →"
    • ✅ Debería mostrar:
      • Nombre del equipo
      • Código de invitación
      • Miembros (solo tú por ahora)
      • Botón "Enviar Submission" (deshabilitado hasta RUNNING)
  5. Iniciar sesión como PARTICIPANT 2

    • Email: participant2@test.com
    • Ir a: /hackathons/hackathon-prueba
    • Registrarse en el hackathon
  6. Unirse a un Equipo

    • En la página de detalle, click en "Unirse a un Equipo"
    • Ingresar el código de invitación copiado anteriormente (ej: ABC123)
    • Click en "Unirse al Equipo"
    • ✅ Debería mostrar mensaje de éxito y redirigir
    • Volver a la página de detalle del equipo
    • ✅ Debería mostrar 2 miembros ahora
  7. Probar límites

    • Intentar crear otro equipo con PARTICIPANT 2
    • ✅ Debería dar error: "Ya perteneces a un equipo"
    • Intentar unirse al mismo equipo otra vez
    • ✅ Debería dar error: "Ya eres miembro de este equipo"

FASE 3: Submissions (PARTICIPANT)

IMPORTANTE: Para probar submissions, el hackathon debe estar en estado RUNNING.

  1. Cambiar estado del hackathon a RUNNING

    • Opción 1: Esperar a que el cron job lo cambie automáticamente
    • Opción 2: Editar las fechas del hackathon para que startsAt sea en el pasado
    • Opción 3: Ejecutar manualmente: pnpm cron:test
  2. Crear Submission

    • Iniciar sesión como PARTICIPANT 1 o 2 (miembro del equipo)
    • Ir a: /hackathons/hackathon-prueba
    • Click en "Ver mi equipo →"
    • Click en "Enviar Submission"
    • Completar formulario:
      • Título: "Mi Proyecto Innovador"
      • Descripción: "Una descripción detallada del proyecto..."
      • Repo URL: https://github.com/usuario/proyecto
      • Demo URL: https://demo.example.com
      • Links adicionales (opcional):
        • Video: https://youtube.com/watch?v=123
    • Click en "Enviar Submission"
    • ✅ Debería redirigir y mostrar la submission en el detalle del equipo
  3. Editar Submission

    • Volver al detalle del equipo
    • Click en "Ver Submission →"
    • O ir directamente a: /hackathons/hackathon-prueba/teams/[teamId]/submit
    • Editar algún campo
    • Click en "Actualizar Submission"
    • ✅ Debería actualizar correctamente
  4. Ver Lista de Submissions (solo cuando está en JUDGING o FINISHED)

    • Cambiar estado del hackathon a JUDGING (editar fechas o esperar cron)
    • Ir a: /hackathons/hackathon-prueba/submissions
    • ✅ Debería mostrar todas las submissions
    • Click en una submission
    • ✅ Debería mostrar detalle completo

FASE 4: Gestión de Jueces (ORGANIZER/ADMIN)

  1. Iniciar sesión como ORGANIZER o ADMIN

    • Email: organizer@test.com o admin@test.com
    • Ir a: /admin/hackathons/hackathon-prueba/dashboard
    • Click en "Gestionar Jueces" (botón nuevo en "Acciones")
  2. Asignar Jueces

    • En el campo de búsqueda, escribir el email de un JUDGE: judge1@test.com
    • Click en "Buscar"
    • ✅ Debería mostrar el usuario encontrado
    • Click en "Asignar"
    • ✅ Debería aparecer en la lista de "Jueces Asignados"
  3. Asignar más jueces

    • Repetir con judge2@test.com
    • ✅ Debería tener 2 jueces asignados
  4. Remover un Juez

    • Click en "Remover" junto a un juez
    • Confirmar
    • ✅ Debería desaparecer de la lista
  5. Probar validaciones

    • Intentar asignar un PARTICIPANT como juez
    • ✅ Debería dar error: "debe tener rol JUDGE"
    • Intentar asignar un juez que ya participa en el hackathon (tiene equipo)
    • ✅ Debería dar error: "ya participa en este hackathon"

FASE 5: Evaluación (JUDGE)

IMPORTANTE: Para probar evaluación, el hackathon debe estar en estado JUDGING.

  1. Cambiar estado del hackathon a JUDGING

    • Editar fechas o esperar cron job
    • O ejecutar: pnpm cron:test
  2. Iniciar sesión como JUDGE

    • Email: judge1@test.com
    • Ir a: /judge/hackathons/hackathon-prueba (si está implementado)
    • O ir directamente a: /hackathons/hackathon-prueba/submissions
    • ✅ Debería ver las submissions
  3. Evaluar una Submission

    • Click en una submission
    • Ir a: /judge/hackathons/hackathon-prueba/submissions/[submissionId]/evaluate (si está implementado)
    • O usar la acción directamente desde el código
    • Puntuar cada criterio:
      • Criterio 1: 8/10
      • Criterio 2: 7/10
    • Agregar comentarios opcionales
    • Click en "Enviar Puntuación"
    • ✅ Debería guardar correctamente

FASE 6: Leaderboard (Público)

  1. Ver Leaderboard
    • Ir a: /hackathons/hackathon-prueba/leaderboard (si está implementado)
    • ✅ Debería mostrar equipos ordenados por puntaje ponderado
    • ✅ Debería mostrar:
      • Posición
      • Nombre del equipo
      • Puntaje ponderado
      • Puntaje total
      • Máximo posible

🔍 Verificaciones de Seguridad

✅ Verificadas Automáticamente

  1. RBAC en todas las páginas

    • ✅ Todas las páginas usan Client Components con useUser()
    • ✅ No hay llamadas a auth() en Server Components (excepto la página pública que ya estaba)
    • ✅ Todas las Server Actions reciben currentUserId como parámetro
  2. Validaciones

    • ✅ Solo PARTICIPANT puede crear/unirse a equipos
    • ✅ Solo PARTICIPANT puede crear/editar submissions
    • ✅ Solo ORGANIZER/ADMIN puede asignar jueces
    • ✅ Solo JUDGE puede puntuar submissions
    • ✅ Validación de fechas en todas las acciones

📍 URLs Importantes

Para PARTICIPANT

  • /hackathons - Lista de hackathons públicos
  • /hackathons/[slug] - Detalle del hackathon
  • /hackathons/[slug]/teams/create - Crear equipo
  • /hackathons/[slug]/teams/join - Unirse a equipo
  • /hackathons/[slug]/teams/[teamId] - Detalle del equipo
  • /hackathons/[slug]/teams/[teamId]/submit - Crear/editar submission
  • /hackathons/[slug]/submissions - Lista de submissions (solo JUDGING/FINISHED)
  • /hackathons/[slug]/submissions/[submissionId] - Detalle de submission

Para ORGANIZER/ADMIN

  • /organizer/hackathons - Mis hackathons
  • /admin/hackathons/create - Crear hackathon
  • /admin/hackathons/[slug]/dashboard - Dashboard del hackathon
  • /admin/hackathons/[slug]/judges - Gestionar jueces
  • /admin/hackathons/[slug] - Editar hackathon

Para JUDGE

  • /judge/hackathons/[slug] - Panel de juez (pendiente)
  • /judge/hackathons/[slug]/submissions/[submissionId]/evaluate - Evaluar submission (pendiente)

Público

  • /hackathons/[slug]/leaderboard - Leaderboard (pendiente)

⚠️ Notas Importantes

  1. Estados del Hackathon:

    • DRAFT → Solo visible para ORGANIZER/ADMIN
    • REGISTRATION → Visible públicamente, permite registro y creación de equipos
    • RUNNING → Permite crear/editar submissions
    • JUDGING → Permite evaluar submissions, visible públicamente
    • FINISHED → Todo visible, leaderboard disponible
  2. Cron Job:

    • Los cambios de estado son automáticos según las fechas
    • Para probar localmente: pnpm cron:test
    • Asegúrate de que el servidor esté corriendo (pnpm dev)
  3. Enlaces en Navbar:

    • ✅ Dashboard (todos)
    • ✅ Gestión de Usuarios (ADMIN)
    • ✅ Mis Hackathons (ORGANIZER/ADMIN)
    • ✅ Crear Hackathon (ORGANIZER/ADMIN)
    • ✅ Hackathons (PARTICIPANT)
    • ⚠️ Enlaces a teams/submissions están en la página de detalle del hackathon (no en navbar)

🐛 Problemas Conocidos

Ninguno hasta el momento. Si encuentras algún error, verifica:

  1. Que el usuario tenga el rol correcto
  2. Que el hackathon esté en el estado correcto
  3. Que el usuario esté registrado (para PARTICIPANT)
  4. Que las fechas sean correctas

Última Actualización: 31 de diciembre, 2025