🧪 Guía de Testing - Módulo 4: Sponsors
📋 Índice
🎯 Features Implementadas
1. Gestión de Organizaciones
- ✅ Crear organización (automáticamente te convierte en OWNER)
- ✅ Editar organización (solo OWNER/ADMIN)
- ✅ Ver lista de organizaciones
- ✅ Ver detalle de organización
- ✅ Gestionar miembros (agregar/eliminar)
- ✅ Ver sponsorships de la organización
2. Gestión de Sponsorships
- ✅ Crear sponsorship para un hackathon
- ✅ Seleccionar tier (DIAMOND, PLATINUM, GOLD, SILVER, BRONZE, PARTNER)
- ✅ Editar sponsorship
- ✅ Ver lista de sponsorships
- ✅ Ver detalle de sponsorship con challenges
3. Gestión de Challenges
- ✅ Crear challenge para un sponsorship
- ✅ Agregar tags (máximo 10)
- ✅ Definir premios
- ✅ Editar challenge
- ✅ Eliminar challenge
- ✅ Ver lista de submissions del hackathon
- ✅ Agregar submissions al shortlist
4. Shortlist
- ✅ Ver lista de proyectos en shortlist
- ✅ Agregar notas a proyectos
- ✅ Ver detalle de proyecto en shortlist
- ✅ Eliminar de shortlist
- ✅ Agrupar por organización
5. Dashboard de Sponsor
- ✅ Estadísticas generales (organizaciones, sponsorships, challenges, shortlist)
- ✅ Acciones rápidas
- ✅ Lista de organizaciones recientes
- ✅ Lista de sponsorships recientes
6. Integración Pública
- ✅ Ver sponsors en página pública del hackathon
- ✅ Ver challenges en página pública del hackathon
- ✅ Links a sitios web de organizaciones
🔄 Flujos de Usuario
Flujo 1: Sponsor Crea Organización y Patrocina Hackathon
-
Login como SPONSOR
- Usuario con rol
SPONSORse autentica - Accede a
/sponsor(dashboard)
- Usuario con rol
-
Crear Organización
- Click en "Crear Organización"
- Llena formulario: nombre, descripción, logo URL, sitio web
- Se convierte automáticamente en OWNER
-
Crear Sponsorship
- Click en "Crear Sponsorship"
- Selecciona organización
- Selecciona hackathon (solo publicados)
- Selecciona tier (DIAMOND, PLATINUM, etc.)
- Opcional: agrega beneficios en JSON
-
Crear Challenge
- Desde detalle del sponsorship, click "Crear Challenge"
- Llena: título, descripción, tags, premios
- Challenge aparece en el sponsorship
-
Ver en Página Pública
- Visita
/hackathons/[slug] - Debe ver el sponsor y sus challenges
- Visita
Flujo 2: Sponsor Agrega Proyectos al Shortlist
-
Ver Submissions del Hackathon
- Desde detalle del challenge, click "Ver Submissions"
- O desde
/sponsor/challenges/[id]/submissions
-
Agregar a Shortlist
- Click "Agregar a Shortlist" en cualquier submission
- El proyecto aparece en el shortlist
-
Ver Shortlist
- Accede a
/sponsor/shortlist - Ve todos los proyectos agrupados por organización
- Puede ver detalles, agregar notas, eliminar
- Accede a
Flujo 3: Gestionar Miembros de Organización
-
Agregar Miembro
- Desde detalle de organización, click "Agregar Miembro"
- Busca por email o ID de perfil
- Asigna rol (OWNER, ADMIN, MEMBER)
-
Eliminar Miembro
- Desde lista de miembros, click "Eliminar"
- No se puede eliminar al último OWNER
Flujo 4: Editar y Eliminar
-
Editar Organización
- Click "Editar" en detalle de organización
- Modifica campos
- Guarda cambios
-
Editar Sponsorship
- Click "Editar" en detalle de sponsorship
- Cambia tier o beneficios
- Guarda cambios
-
Editar/Eliminar Challenge
- Click "Editar" en detalle de challenge
- Modifica o elimina
- Al eliminar, redirige al sponsorship
🚀 Instrucciones de Setup
Paso 1: Ejecutar Seed de Datos
# Ejecutar el script de seed
pnpm run db:seed:sponsors
Este script creará:
- 4 organizaciones
- Sponsorships para hackathons existentes
- 5-10 challenges
- Items en shortlist (si hay submissions)
Paso 2: Verificar Usuario SPONSOR
El script automáticamente:
- Busca un perfil con rol
SPONSOR - Si no existe, actualiza el primer perfil a
SPONSOR
Para crear un usuario SPONSOR manualmente:
- Ve a
/onboarding(si no tienes perfil) - O actualiza un perfil existente en la base de datos:
UPDATE "Profile" SET role = 'SPONSOR' WHERE email = 'tu-email@example.com';
Paso 3: Iniciar Servidor
pnpm dev
Paso 4: Login como SPONSOR
- Ve a
/sign-in - Inicia sesión con el usuario que tiene rol
SPONSOR - Serás redirigido a
/sponsor(dashboard)
🧪 Qué Probar
1. Dashboard de Sponsor (/sponsor)
Qué verificar:
- ✅ Muestra estadísticas correctas
- ✅ Links a acciones rápidas funcionan
- ✅ Lista de organizaciones se muestra
- ✅ Lista de sponsorships se muestra
Datos esperados después del seed:
- 4 organizaciones
- Varios sponsorships (depende de hackathons disponibles)
- Varios challenges
- Items en shortlist (si hay submissions)
2. Gestión de Organizaciones
Lista de Organizaciones (/sponsor/organizations)
Qué verificar:
- ✅ Muestra todas las organizaciones del usuario
- ✅ Cards muestran nombre, descripción, logo
- ✅ Muestra contador de miembros y sponsorships
- ✅ Click en card lleva a detalle
Crear Organización (/sponsor/organizations/create)
Qué verificar:
- ✅ Formulario valida campos (nombre mínimo 3 caracteres)
- ✅ URL de logo y sitio web son opcionales
- ✅ Después de crear, redirige a detalle
- ✅ Usuario se convierte en OWNER automáticamente
Datos de prueba:
Nombre: "Mi Nueva Organización"
Descripción: "Una organización de prueba"
Logo URL: "https://via.placeholder.com/150"
Sitio Web: "https://example.com"
Detalle de Organización (/sponsor/organizations/[id])
Qué verificar:
- ✅ Muestra información completa
- ✅ Lista de miembros con roles
- ✅ Lista de sponsorships
- ✅ Botón "Editar" solo visible para OWNER/ADMIN
- ✅ Botón "Agregar Miembro" solo visible para OWNER/ADMIN
Editar Organización (/sponsor/organizations/[id]/edit)
Qué verificar:
- ✅ Formulario pre-poblado con datos actuales
- ✅ Puede modificar cualquier campo
- ✅ Guarda cambios correctamente
- ✅ Redirige a detalle después de guardar
3. Gestión de Sponsorships
Lista de Sponsorships (/sponsor/sponsorships)
Qué verificar:
- ✅ Muestra sponsorships de todas las organizaciones
- ✅ Muestra hackathon, organización, tier
- ✅ Muestra contador de challenges
- ✅ Click lleva a detalle
Crear Sponsorship (/sponsor/sponsorships/create)
Qué verificar:
- ✅ Solo muestra organizaciones del usuario
- ✅ Solo muestra hackathons publicados (no DRAFT)
- ✅ Puede seleccionar tier
- ✅ Campo de beneficios (JSON) es opcional
- ✅ Valida que no se duplique sponsorship
Datos de prueba:
Organización: [Seleccionar una]
Hackathon: [Seleccionar uno]
Tier: GOLD
Beneficios: {"logo": true, "booth": true}
Detalle de Sponsorship (/sponsor/sponsorships/[id])
Qué verificar:
- ✅ Muestra información del sponsorship
- ✅ Lista de challenges
- ✅ Botón "Crear Challenge" funciona
- ✅ Botón "Editar" funciona
Editar Sponsorship (/sponsor/sponsorships/[id]/edit)
Qué verificar:
- ✅ Puede cambiar tier
- ✅ Puede modificar beneficios (JSON)
- ✅ Valida JSON si se proporciona
4. Gestión de Challenges
Crear Challenge (/sponsor/challenges/create)
Qué verificar:
- ✅ Solo muestra sponsorships del usuario
- ✅ Si viene de sponsorship, está pre-seleccionado
- ✅ Campos requeridos: título (min 3), descripción (min 10)
- ✅ Tags dinámicos (agregar/eliminar, máximo 10)
- ✅ Premios opcionales
Datos de prueba:
Sponsorship: [Seleccionar uno]
Título: "Challenge de Prueba"
Descripción: "Este es un challenge de prueba con más de 10 caracteres"
Tags: ["AI", "ML", "Innovación"]
Premios: "$1000 en efectivo"
Detalle de Challenge (/sponsor/challenges/[id])
Qué verificar:
- ✅ Muestra información completa
- ✅ Tags visuales
- ✅ Lista de proyectos en shortlist
- ✅ Botones "Editar" y "Eliminar"
- ✅ Link "Ver Submissions" funciona
Editar Challenge (/sponsor/challenges/[id]/edit)
Qué verificar:
- ✅ Formulario pre-poblado
- ✅ Puede modificar todos los campos
- ✅ Tags dinámicos funcionan
- ✅ Botón eliminar con confirmación
- ✅ Redirige correctamente después de eliminar
Submissions del Challenge (/sponsor/challenges/[id]/submissions)
Qué verificar:
- ✅ Lista todas las submissions del hackathon
- ✅ Muestra si ya está en shortlist
- ✅ Botón "Agregar a Shortlist" funciona
- ✅ Links a repo, demo, detalle funcionan
5. Shortlist
Lista de Shortlist (/sponsor/shortlist)
Qué verificar:
- ✅ Agrupa por organización
- ✅ Muestra challenge asociado
- ✅ Muestra notas si existen
- ✅ Muestra fecha de agregado
- ✅ Click lleva a detalle
Detalle de Proyecto en Shortlist (/sponsor/shortlist/[submissionId])
Qué verificar:
- ✅ Muestra información completa del proyecto
- ✅ Muestra equipo y miembros
- ✅ Muestra enlaces (repo, demo, extra)
- ✅ Lista todas las organizaciones que lo tienen en shortlist
- ✅ Botón eliminar funciona
- ✅ Si es el último, redirige a lista
6. Integración Pública
Página Pública del Hackathon (/hackathons/[slug])
Qué verificar:
- ✅ Sección "Patrocinadores" muestra sponsors
- ✅ Logos de organizaciones se muestran
- ✅ Tiers se muestran correctamente
- ✅ Links a sitios web funcionan
- ✅ Sección "Challenges de Patrocinadores" muestra challenges
- ✅ Tags de challenges se muestran
- ✅ Premios se muestran
Nota: Solo se muestran si el hackathon tiene sponsorships.
✅ Checklist de Testing
Backend (Server Actions)
- Crear organización funciona
- Editar organización funciona (solo OWNER/ADMIN)
- Agregar miembro funciona
- Eliminar miembro funciona (no último OWNER)
- Crear sponsorship funciona
- Editar sponsorship funciona
- Crear challenge funciona
- Editar challenge funciona
- Eliminar challenge funciona
- Agregar a shortlist funciona
- Eliminar de shortlist funciona
Frontend (UI)
- Dashboard carga correctamente
- Lista de organizaciones se muestra
- Crear organización funciona
- Detalle de organización se muestra
- Editar organización funciona
- Lista de sponsorships se muestra
- Crear sponsorship funciona
- Detalle de sponsorship se muestra
- Editar sponsorship funciona
- Crear challenge funciona
- Detalle de challenge se muestra
- Editar challenge funciona
- Eliminar challenge funciona
- Lista de submissions se muestra
- Agregar a shortlist funciona
- Lista de shortlist se muestra
- Detalle de shortlist se muestra
- Eliminar de shortlist funciona
Integración
- Sponsors se muestran en página pública
- Challenges se muestran en página pública
- Links funcionan correctamente
- Imágenes se cargan (logos)
Validaciones
- No se puede crear sponsorship duplicado
- No se puede agregar submission duplicada al shortlist
- No se puede eliminar último OWNER
- Validaciones de campos funcionan (min/max length)
- Validaciones de CUID funcionan
- Validaciones de JSON funcionan (beneficios)
RBAC (Permisos)
- Solo SPONSOR/ADMIN puede acceder a
/sponsor - Solo miembros de organización pueden ver/editar
- Solo OWNER/ADMIN puede gestionar miembros
- Solo miembros pueden crear sponsorships/challenges
🐛 Problemas Comunes
"No autenticado" o "No autorizado"
- Verifica que el usuario tenga rol
SPONSORoADMIN - Verifica que el usuario sea miembro de la organización
"No hay hackathons disponibles"
- Ejecuta seed de hackathons primero
- Verifica que haya hackathons con status diferente a
DRAFT
"No hay submissions"
- Ejecuta seed de teams y submissions
- Verifica que haya submissions en hackathons patrocinados
Imágenes no se muestran
- Los logos usan
via.placeholder.com(servicio externo) - Verifica conexión a internet
- O reemplaza con URLs reales
📊 Datos Esperados Después del Seed
Después de ejecutar pnpm run db:seed:sponsors:
- Organizaciones: 4
- Sponsorships: Depende de hackathons disponibles (hasta 4)
- Challenges: 5-10 (1-2 por sponsorship)
- Shortlist Items: Depende de submissions disponibles (hasta 5)
🎉 ¡Listo para Probar!
Sigue el checklist y prueba cada feature. Si encuentras algún problema, revisa los logs de la consola y la base de datos.
¡Disfruta probando el módulo de Sponsors! 🚀