141 lines
5.2 KiB
Gherkin
141 lines
5.2 KiB
Gherkin
# 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
|
|
|
|
Feature: Pago de turno
|
|
|
|
Como dueno de mascota con turno coordinado
|
|
Quiero pagar mi turno online
|
|
Para confirmar la visita del veterinario
|
|
|
|
Background:
|
|
Given que tengo un turno en estado "Coordinado"
|
|
And el turno tiene asignado veterinario "Dra. Garcia"
|
|
And la fecha asignada es "15 de enero a las 10:00"
|
|
|
|
# ============================================
|
|
# FLUJO DE PAGO EXITOSO
|
|
# ============================================
|
|
|
|
Scenario: Pagar turno con tarjeta de credito
|
|
Given que estoy en el detalle de mi turno coordinado
|
|
When hago click en "Pagar"
|
|
Then deberia ser redirigido a Mercado Pago
|
|
And deberia ver el monto correcto
|
|
|
|
When selecciono "Tarjeta de credito"
|
|
And completo los datos de la tarjeta
|
|
And confirmo el pago
|
|
Then deberia volver a la plataforma
|
|
And deberia ver "Pago exitoso"
|
|
And el turno deberia estar en estado "Pagado"
|
|
|
|
Scenario: Recibir confirmacion de pago
|
|
Given que complete el pago exitosamente
|
|
Then deberia recibir email de confirmacion
|
|
And el email deberia contener:
|
|
| campo |
|
|
| Fecha del turno |
|
|
| Direccion |
|
|
| Veterinario asignado |
|
|
| Monto pagado |
|
|
| Numero de operacion |
|
|
|
|
# ============================================
|
|
# METODOS DE PAGO
|
|
# ============================================
|
|
|
|
Scenario Outline: Pagar con diferentes metodos
|
|
Given que estoy en Mercado Pago
|
|
When selecciono metodo "<metodo>"
|
|
And completo el pago
|
|
Then el pago deberia ser <resultado>
|
|
And el estado de acreditacion deberia ser "<acreditacion>"
|
|
|
|
Examples:
|
|
| 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
|
|
# ============================================
|
|
|
|
Scenario: Pago rechazado por fondos insuficientes
|
|
Given que estoy en Mercado Pago
|
|
When intento pagar con tarjeta sin fondos
|
|
Then deberia ver error "Fondos insuficientes"
|
|
And deberia poder reintentar con otra tarjeta
|
|
And el turno deberia seguir en estado "Coordinado"
|
|
|
|
Scenario: Usuario cancela el pago
|
|
Given que estoy en Mercado Pago
|
|
When hago click en "Volver al sitio"
|
|
Then deberia volver a la plataforma
|
|
And deberia ver mensaje "El pago fue cancelado"
|
|
And deberia ver boton "Reintentar pago"
|
|
And el turno deberia seguir en estado "Coordinado"
|
|
|
|
Scenario: Cierre de browser durante pago
|
|
Given que estoy en Mercado Pago
|
|
And cierro el navegador accidentalmente
|
|
When vuelvo a la plataforma
|
|
And voy a "Mis turnos"
|
|
Then deberia poder ver el estado real del pago
|
|
# Si se proceso: Pagado. Si no: Coordinado con opcion de pagar
|
|
|
|
# ============================================
|
|
# CASOS ESPECIALES
|
|
# ============================================
|
|
|
|
Scenario: Link de pago expirado
|
|
Given que recibi el link de pago hace mas de 24 horas
|
|
When hago click en el link
|
|
Then deberia ver "Este link ha expirado"
|
|
And deberia ver "Contacta a soporte para generar uno nuevo"
|
|
|
|
Scenario: Intento pagar turno ya pagado
|
|
Given que mi turno ya esta en estado "Pagado"
|
|
When accedo al link de pago
|
|
Then deberia ver "Este turno ya fue pagado"
|
|
And deberia ver boton "Ver detalle del turno"
|
|
|
|
Scenario: Precio cambio desde la coordinacion
|
|
# Caso muy raro pero posible
|
|
Given que el precio del servicio aumento desde que se coordino
|
|
When voy a pagar
|
|
Then deberia ver el precio original acordado
|
|
# El precio se congela al momento de coordinacion
|
|
|
|
# ============================================
|
|
# INTEGRACION CON WEBHOOK
|
|
# ============================================
|
|
|
|
Rule: El estado del turno se actualiza via webhook de Mercado Pago
|
|
|
|
Scenario: Webhook confirma pago aprobado
|
|
Given que el usuario completo el pago en Mercado Pago
|
|
When Mercado Pago envia webhook con status "approved"
|
|
Then el turno deberia cambiar a estado "Pagado"
|
|
And el veterinario deberia recibir notificacion
|
|
And el usuario deberia recibir email de confirmacion
|
|
|
|
Scenario: Webhook informa pago pendiente
|
|
Given que el usuario pago con transferencia bancaria
|
|
When Mercado Pago envia webhook con status "pending"
|
|
Then el turno deberia quedarse en "Coordinado"
|
|
And deberia registrarse el pago pendiente
|
|
And el usuario deberia recibir email "Esperando acreditacion"
|
|
|
|
Scenario: Webhook falla pero pago se proceso
|
|
# Caso de error que requiere intervencion manual
|
|
Given que el usuario pago exitosamente
|
|
But el webhook fallo por error de red
|
|
Then el turno seguira en "Coordinado"
|
|
And el equipo de ops deberia recibir alerta
|
|
And deberian poder actualizar manualmente
|