# Test End-to-End: Law Firm Digital

> Fecha: 2026-04-13
> Objetivo: Validar el flujo completo con un proyecto de prueba

---

## Datos del test

- **Nombre:** Estudio Test E2E
- **Core:** law-firm-digital
- **Demo:** demo-law-firm-2
- **DB:** test_e2e_lawfirm
- **Email cliente:** (usar un email real para verificar recepción)

---

## PASO 1: Solicitar via form-reseller

1. Abrir `http://127.0.0.1:8000/admin` → login como admin
2. Navegar a `http://127.0.0.1:8000/form-reseller`
3. Completar:
   - Nombre: "Estudio Test E2E"
   - URL: (vacío)
   - Email: (tu email real para verificar)
   - Demo: demo-law-firm-2
   - Core: law-firm-digital
   - Provisión limpia: checked
   - Colores: dejar defaults (law firm)
4. Submit

**Verificar:**
- [ ] Respuesta exitosa con record_id
- [ ] Email de confirmación llega a tu casilla (admin)
- [ ] Registro en Airtable: Pipeline_Status = "Required", Product linked, Reseller = "Compania Digital"

---

## PASO 2: Simular provisión local

> En producción esto lo hace el cron. En local lo hacemos manualmente.

```bash
php artisan bewpro:new TU_EMAIL "Estudio Test E2E" law-firm-digital \
    --clean \
    --colors="#1A325D,#B8960C,#F5F5F0,#6B7280,#0F1923,#FFFFFF" \
    --db=test_e2e_lawfirm \
    --skip-assets \
    --no-email
```

**Verificar:**
- [ ] Comando termina sin errores
- [ ] DB `test_e2e_lawfirm` creada con tablas
- [ ] Settings correctos (demo-law-firm-2, módulos: services, team, blog, references, faqs)
- [ ] Colores aplicados

---

## PASO 3: Verificar sitio provisionado

```bash
# Cambiar DB temporalmente
# En .env: DB_DATABASE=test_e2e_lawfirm
```

1. Abrir `http://127.0.0.1:8000` → debe cargar demo-law-firm-2
2. Verificar que es un sitio "limpio" (sin contenido seed porque usamos --clean)
3. Abrir `http://127.0.0.1:8000/admin` → login con las credenciales

**Verificar:**
- [ ] Homepage carga con header/footer de law-firm-2
- [ ] Admin panel funciona
- [ ] Módulos visibles en admin: Services, Team, Blog, References, FAQs
- [ ] Todo vacío (--clean)

---

## PASO 4: Cargar contenido del cliente

```bash
# Usar el template de law-firm
php artisan bewpro:seed database/seeders/project-data/templates/template-law-firm.json \
    --db=test_e2e_lawfirm
```

**Verificar:**
- [ ] Comando termina sin errores
- [ ] Services cargados (5 áreas de práctica)
- [ ] Team cargado (miembros del equipo)
- [ ] Blog cargado (posts de ejemplo)
- [ ] FAQs cargadas
- [ ] References cargadas
- [ ] Homepage muestra contenido

---

## PASO 5: Verificar frontend completo

Navegar por cada sección del sitio:

- [ ] Homepage: hero, servicios destacados, CTA
- [ ] `/services` — lista de servicios con categorías
- [ ] `/services/{slug}` — detalle de un servicio
- [ ] `/team` — miembros del equipo
- [ ] `/blog` — lista de posts
- [ ] `/blog/{slug}` — detalle de un post
- [ ] `/faqs` — preguntas frecuentes
- [ ] `/references` — testimonios/referencias
- [ ] `/about` — página about
- [ ] `/contact` — página de contacto
- [ ] Header: navegación correcta, CTA visible
- [ ] Footer: links, redes sociales

---

## PASO 6: Verificar admin panel

Logueado como admin:

- [ ] `/admin/services` — CRUD funciona (crear, editar, borrar servicio)
- [ ] `/admin/team-members` — CRUD funciona
- [ ] `/admin/blog` — CRUD funciona
- [ ] `/admin/faqs` — CRUD funciona
- [ ] `/admin/references` — CRUD funciona
- [ ] `/admin/settings` — editar nombre, contacto, redes sociales
- [ ] Cambios en admin se reflejan en frontend

---

## PASO 7: Enviar emails de bienvenida (test)

```bash
php artisan bewpro:send-welcome TU_EMAIL "Estudio Test E2E" \
    "http://127.0.0.1:8000" "test123" \
    --product=law-firm-digital \
    --reseller-email=TU_EMAIL \
    --grace-end=2026-04-28
```

**Verificar:**
- [ ] Email de bienvenida al "cliente" llega (SiteProvisionedMail)
- [ ] Email de notificación al "reseller" llega (ProjectProvisionedNotifyResellerMail)
- [ ] Ambos emails se ven profesionales, sin typos
- [ ] Credenciales correctas en ambos
- [ ] Deadline de onboarding visible en email del reseller

---

## PASO 8: Verificar grace period check

```bash
php artisan bewpro:check-grace --dry-run
```

**Verificar:**
- [ ] Comando ejecuta sin errores
- [ ] Muestra proyectos (si los hay) con gracia vencida
- [ ] En dry-run no modifica nada

---

## PASO 9: Limpiar test

```bash
# Restaurar .env a la DB original
# En .env: DB_DATABASE=bp-bewpro (o la que corresponda)

# Borrar DB de test
mysql -u root -e "DROP DATABASE IF EXISTS test_e2e_lawfirm;"

# Borrar registro de Airtable (opcional — anotar el record_id del paso 1)
```

---

## Resultado

| Paso | Estado | Notas |
|------|--------|-------|
| 1. Form-reseller | | |
| 2. Provisión local | | |
| 3. Sitio limpio | | |
| 4. Carga contenido | | |
| 5. Frontend completo | | |
| 6. Admin panel | | |
| 7. Emails | | |
| 8. Grace period | | |
| 9. Limpieza | | |
