Skip to Content
Plan de pruebas13. Suscripción y plan

13. Suscripción y plan

Cubre subscriptions: trial, demo, vencimiento, paywall y los límites de funcionalidad por plan. No cubre el checkout real de MercadoPago de punta a punta (requeriría un pago real o credenciales sandbox — si existen credenciales sandbox en staging, agregar esos casos después; de lo contrario, documentar como limitación conocida de este ciclo).

Historial de ejecución

CicloFechaEjecutado porCasos ejecutadosResultado
1———Pendiente

CP SUB-01: Toda empresa nueva arranca en trial

  • Precondición: empresa recién registrada (ver AUTH-01).
  • Resultado esperado: status="trial", plan="basic", trial_ends_at = fecha de registro + 45 días (TrialDays=45).
  • Resultado obtenido: Pendiente.

CP SUB-02: Iniciar modo demo (POST /subscription/demo)

  • Pasos: elegir un business_type (retail/food/services/generic).
  • Resultado esperado: status="demo", demo_expires_at = ahora + 1 hora (DemoHours=1); confirmar que el demo precarga datos de ejemplo acordes al business_type elegido (ver nota de la técnica de capturas: “Cargar datos de demo” tipo “Gastrobar”).
  • Resultado obtenido: Pendiente.

CP SUB-03: Iniciar demo con business_type inválido (ej. "otro")

  • Resultado esperado: error 400 (binding:"oneof=retail food services generic").
  • Resultado obtenido: Pendiente.

CP SUB-04: Demo vencido (esperar 1 hora, o ajustar demo_expires_at manualmente en la base para no esperar)

  • Resultado esperado: status pasa a "expired"; confirmar que IsDemoExpired() efectivamente bloquea el acceso normal y muestra el paywall.
  • Resultado obtenido: Pendiente.

CP SUB-05: Trial vencido — comportamiento del paywall

  • Objetivo: conocido por sesiones anteriores — al vencer el trial aparece un modal .paywall-overlay fijo con blur de fondo en todas las páginas, sin botón de cierre.
  • Pasos: forzar trial_ends_at al pasado (directamente en la base, ya que esperar 45 días no es viable) → recargar cualquier página del dashboard.
  • Resultado esperado a verificar: el modal aparece, pero no bloquea la interacción real (se puede seguir llenando formularios y guardando “por debajo” del modal) — confirmar si esto es intencional o es en sí mismo un hallazgo: un modal de paywall que no impide usar la app no cumple su propósito de negocio.
  • Resultado obtenido: Pendiente.

CP SUB-06: Intentar usar una función de Plan Medio/Pro estando en Plan Básico (fuera de invoicing/terminales, que están excluidos de este plan)

  • Pasos: revisar si hay alguna otra función con gate de plan (ej. número máximo de tiendas, de usuarios, de productos) — si existe, probar el límite exacto.
  • Resultado esperado a verificar: confirmar si existen límites de ese tipo en el código actual o si el único gate real hoy es CanUseInvoicing/CanUseTerminals (ambos sobre features excluidas de este ciclo de pruebas).
  • Resultado obtenido: Pendiente.

CP SUB-07: Iniciar checkout (POST /subscription/checkout) con plan y ciclo de facturación válidos

  • Pasos: plan="medium", billing_cycle="monthly".
  • Resultado esperado: debe devolver una checkout_url de MercadoPago válida (no necesariamente completar el pago real).
  • Resultado obtenido: Pendiente.

CP SUB-08: Checkout con plan/billing_cycle inválidos

  • Resultado esperado: error 400 claro (oneof=basic medium pro / oneof=monthly annual).
  • Resultado obtenido: Pendiente.

CP SUB-09: Pasar de demo a trial/plan real mediante checkout

  • Resultado esperado a verificar: confirmar que el webhook de MercadoPago (HandleWebhook) efectivamente actualiza el estado y plan al confirmar el pago (si hay forma de simularlo en sandbox); si no es viable en este ciclo, dejar explícitamente como “no probado — requiere sandbox de MercadoPago”.
  • Resultado obtenido: Pendiente — probablemente no ejecutable en staging sin credenciales sandbox; confirmar con el usuario antes de intentar.

Notas de usabilidad y sugerencias

Se completa durante la ejecución. El caso SUB-05 (paywall que no bloquea) es, de los 13 módulos de este plan, uno de los pocos donde ya hay evidencia previa de un comportamiento cuestionable — priorizarlo.

© 2026 ClickStock