142 lines
5.2 KiB
Gherkin
142 lines
5.2 KiB
Gherkin
# language: es
|
|
# Fuente: album/book/ops-templates/pet-owner/04-pago-turno.md
|
|
# Drive: 07. Finanzas y contabilidad/Mercado Pago
|
|
# Tests Backend: pytest tests/contracts/payments/test_mercadopago.py
|
|
# Tests Frontend: npx playwright test payment.spec.ts
|
|
|
|
Característica: Pago de turno
|
|
|
|
Como dueno de mascota con turno coordinado
|
|
Quiero pagar mi turno online
|
|
Para confirmar la visita del veterinario
|
|
|
|
Antecedentes:
|
|
Dado que tengo un turno en estado "Coordinado"
|
|
Y el turno tiene asignado veterinario "Dra. Garcia"
|
|
Y la fecha asignada es "15 de enero a las 10:00"
|
|
|
|
# ============================================
|
|
# FLUJO DE PAGO EXITOSO
|
|
# ============================================
|
|
|
|
Escenario: Pagar turno con tarjeta de credito
|
|
Dado que estoy en el detalle de mi turno coordinado
|
|
Cuando hago click en "Pagar"
|
|
Entonces deberia ser redirigido a Mercado Pago
|
|
Y deberia ver el monto correcto
|
|
|
|
Cuando selecciono "Tarjeta de credito"
|
|
Y completo los datos de la tarjeta
|
|
Y confirmo el pago
|
|
Entonces deberia volver a la plataforma
|
|
Y deberia ver "Pago exitoso"
|
|
Y el turno deberia estar en estado "Pagado"
|
|
|
|
Escenario: Recibir confirmacion de pago
|
|
Dado que complete el pago exitosamente
|
|
Entonces deberia recibir email de confirmacion
|
|
Y el email deberia contener:
|
|
| campo |
|
|
| Fecha del turno |
|
|
| Direccion |
|
|
| Veterinario asignado |
|
|
| Monto pagado |
|
|
| Numero de operacion |
|
|
|
|
# ============================================
|
|
# METODOS DE PAGO
|
|
# ============================================
|
|
|
|
Esquema del escenario: Pagar con diferentes metodos
|
|
Dado que estoy en Mercado Pago
|
|
Cuando selecciono metodo "<metodo>"
|
|
Y completo el pago
|
|
Entonces el pago deberia ser <resultado>
|
|
Y el estado de acreditacion deberia ser "<acreditacion>"
|
|
|
|
Ejemplos:
|
|
| metodo | resultado | acreditacion |
|
|
| Tarjeta credito | exitoso | inmediata |
|
|
| Tarjeta debito | exitoso | inmediata |
|
|
| Dinero en cuenta | exitoso | inmediata |
|
|
| Transferencia | pendiente | 1-2 dias |
|
|
| Rapipago | pendiente | hasta 24hs |
|
|
|
|
# ============================================
|
|
# MANEJO DE ERRORES
|
|
# ============================================
|
|
|
|
Escenario: Pago rechazado por fondos insuficientes
|
|
Dado que estoy en Mercado Pago
|
|
Cuando intento pagar con tarjeta sin fondos
|
|
Entonces deberia ver error "Fondos insuficientes"
|
|
Y deberia poder reintentar con otra tarjeta
|
|
Y el turno deberia seguir en estado "Coordinado"
|
|
|
|
Escenario: Usuario cancela el pago
|
|
Dado que estoy en Mercado Pago
|
|
Cuando hago click en "Volver al sitio"
|
|
Entonces deberia volver a la plataforma
|
|
Y deberia ver mensaje "El pago fue cancelado"
|
|
Y deberia ver boton "Reintentar pago"
|
|
Y el turno deberia seguir en estado "Coordinado"
|
|
|
|
Escenario: Cierre de browser durante pago
|
|
Dado que estoy en Mercado Pago
|
|
Y cierro el navegador accidentalmente
|
|
Cuando vuelvo a la plataforma
|
|
Y voy a "Mis turnos"
|
|
Entonces deberia poder ver el estado real del pago
|
|
# Si se proceso: Pagado. Si no: Coordinado con opcion de pagar
|
|
|
|
# ============================================
|
|
# CASOS ESPECIALES
|
|
# ============================================
|
|
|
|
Escenario: Link de pago expirado
|
|
Dado que recibi el link de pago hace mas de 24 horas
|
|
Cuando hago click en el link
|
|
Entonces deberia ver "Este link ha expirado"
|
|
Y deberia ver "Contacta a soporte para generar uno nuevo"
|
|
|
|
Escenario: Intento pagar turno ya pagado
|
|
Dado que mi turno ya esta en estado "Pagado"
|
|
Cuando accedo al link de pago
|
|
Entonces deberia ver "Este turno ya fue pagado"
|
|
Y deberia ver boton "Ver detalle del turno"
|
|
|
|
Escenario: Precio cambio desde la coordinacion
|
|
# Caso muy raro pero posible
|
|
Dado que el precio del servicio aumento desde que se coordino
|
|
Cuando voy a pagar
|
|
Entonces deberia ver el precio original acordado
|
|
# El precio se congela al momento de coordinacion
|
|
|
|
# ============================================
|
|
# INTEGRACION CON WEBHOOK
|
|
# ============================================
|
|
|
|
Regla: El estado del turno se actualiza via webhook de Mercado Pago
|
|
|
|
Escenario: Webhook confirma pago aprobado
|
|
Dado que el usuario completo el pago en Mercado Pago
|
|
Cuando Mercado Pago envia webhook con status "approved"
|
|
Entonces el turno deberia cambiar a estado "Pagado"
|
|
Y el veterinario deberia recibir notificacion
|
|
Y el usuario deberia recibir email de confirmacion
|
|
|
|
Escenario: Webhook informa pago pendiente
|
|
Dado que el usuario pago con transferencia bancaria
|
|
Cuando Mercado Pago envia webhook con status "pending"
|
|
Entonces el turno deberia quedarse en "Coordinado"
|
|
Y deberia registrarse el pago pendiente
|
|
Y el usuario deberia recibir email "Esperando acreditacion"
|
|
|
|
Escenario: Webhook falla pero pago se proceso
|
|
# Caso de error que requiere intervencion manual
|
|
Dado que el usuario pago exitosamente
|
|
Pero el webhook fallo por error de red
|
|
Entonces el turno seguira en "Coordinado"
|
|
Y el equipo de ops deberia recibir alerta
|
|
Y deberian poder actualizar manualmente
|