Saltar al contenido principal

🧪 Guía de Testing - Módulo 4: Sponsors

📋 Índice

  1. Features Implementadas
  2. Flujos de Usuario
  3. Instrucciones de Setup
  4. Qué Probar
  5. Checklist de Testing

🎯 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

  1. Login como SPONSOR

    • Usuario con rol SPONSOR se autentica
    • Accede a /sponsor (dashboard)
  2. Crear Organización

    • Click en "Crear Organización"
    • Llena formulario: nombre, descripción, logo URL, sitio web
    • Se convierte automáticamente en OWNER
  3. Crear Sponsorship

    • Click en "Crear Sponsorship"
    • Selecciona organización
    • Selecciona hackathon (solo publicados)
    • Selecciona tier (DIAMOND, PLATINUM, etc.)
    • Opcional: agrega beneficios en JSON
  4. Crear Challenge

    • Desde detalle del sponsorship, click "Crear Challenge"
    • Llena: título, descripción, tags, premios
    • Challenge aparece en el sponsorship
  5. Ver en Página Pública

    • Visita /hackathons/[slug]
    • Debe ver el sponsor y sus challenges

Flujo 2: Sponsor Agrega Proyectos al Shortlist

  1. Ver Submissions del Hackathon

    • Desde detalle del challenge, click "Ver Submissions"
    • O desde /sponsor/challenges/[id]/submissions
  2. Agregar a Shortlist

    • Click "Agregar a Shortlist" en cualquier submission
    • El proyecto aparece en el shortlist
  3. Ver Shortlist

    • Accede a /sponsor/shortlist
    • Ve todos los proyectos agrupados por organización
    • Puede ver detalles, agregar notas, eliminar

Flujo 3: Gestionar Miembros de Organización

  1. Agregar Miembro

    • Desde detalle de organización, click "Agregar Miembro"
    • Busca por email o ID de perfil
    • Asigna rol (OWNER, ADMIN, MEMBER)
  2. Eliminar Miembro

    • Desde lista de miembros, click "Eliminar"
    • No se puede eliminar al último OWNER

Flujo 4: Editar y Eliminar

  1. Editar Organización

    • Click "Editar" en detalle de organización
    • Modifica campos
    • Guarda cambios
  2. Editar Sponsorship

    • Click "Editar" en detalle de sponsorship
    • Cambia tier o beneficios
    • Guarda cambios
  3. 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:

  1. Ve a /onboarding (si no tienes perfil)
  2. 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

  1. Ve a /sign-in
  2. Inicia sesión con el usuario que tiene rol SPONSOR
  3. 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 SPONSOR o ADMIN
  • 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! 🚀