major restructure

This commit is contained in:
buenosairesam
2026-01-20 05:31:26 -03:00
parent 27b32deba4
commit e4052374db
328 changed files with 1018 additions and 10018 deletions

View File

@@ -0,0 +1,140 @@
# 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