142 lines
5.3 KiB
Gherkin
142 lines
5.3 KiB
Gherkin
# language: es
|
|
# Fuente: album/book/ops-templates/pet-owner/02-reservar-turno.md
|
|
# Drive: 08. IT y Producto/Funcionalidades Plataforma Veterinario
|
|
# Tests Backend: pytest tests/contracts/workflows/test_turnero_general.py
|
|
# Tests Frontend: npx playwright test turnero.spec.ts
|
|
# Relacionado: def/work_plan/10-flow-turnero.md
|
|
|
|
Característica: Reservar turno veterinario (Turnero)
|
|
|
|
Como dueno de mascota
|
|
Quiero reservar un turno veterinario a domicilio
|
|
Para que atiendan a mi mascota sin salir de casa
|
|
|
|
Antecedentes:
|
|
Dado que estoy en la pagina del turnero
|
|
|
|
# ============================================
|
|
# VERIFICACION DE COBERTURA
|
|
# ============================================
|
|
|
|
Escenario: Verificar cobertura en zona disponible
|
|
Cuando ingreso direccion "Av Santa Fe 1234, CABA"
|
|
Entonces deberia ver mensaje "Tenemos cobertura en tu zona"
|
|
Y deberia poder continuar al siguiente paso
|
|
|
|
Escenario: Zona sin cobertura
|
|
Cuando ingreso direccion "Calle Principal 100, Ushuaia"
|
|
Entonces deberia ver mensaje "Aun no tenemos cobertura en tu zona"
|
|
Y deberia ver formulario "Avisame cuando lleguen"
|
|
|
|
# ============================================
|
|
# FLUJO COMPLETO POR TIPO DE USUARIO
|
|
# ============================================
|
|
|
|
Esquema del escenario: Reservar turno como <tipo_usuario>
|
|
Dado que soy un usuario <tipo_usuario>
|
|
Y tengo cobertura en mi zona
|
|
Cuando completo los datos de mi mascota:
|
|
| campo | valor |
|
|
| nombre | Luna |
|
|
| tipo | Gato |
|
|
| edad | 2 años |
|
|
| castrada | Si |
|
|
Y selecciono servicios:
|
|
| servicio |
|
|
| Vacunacion |
|
|
Y selecciono fechas preferidas:
|
|
| fecha | franja |
|
|
| 2024-01-15 | Mañana |
|
|
| 2024-01-16 | Tarde |
|
|
Y completo datos de contacto con email "<email>"
|
|
Y envio la solicitud
|
|
Entonces deberia crearse una solicitud en estado "Pendiente"
|
|
Y el dueno deberia ser <estado_dueno>
|
|
Y deberia recibir email de confirmacion
|
|
|
|
Ejemplos:
|
|
| tipo_usuario | email | estado_dueno |
|
|
| invitado | nuevo@test.com | creado como invitado |
|
|
| registrado | user@test.com | mi cuenta existente |
|
|
| recurrente | conocido@test.com | identificado por email |
|
|
|
|
# ============================================
|
|
# SELECCION DE SERVICIOS
|
|
# ============================================
|
|
|
|
Escenario: Servicios filtrados por tipo de mascota
|
|
Dado que agregue una mascota tipo "Gato"
|
|
Cuando veo los servicios disponibles
|
|
Entonces deberia ver "Vacuna triple felina"
|
|
Y deberia ver "Vacuna antirabica"
|
|
Pero no deberia ver "Vacuna sextuple canina"
|
|
|
|
Escenario: Consulta clinica se agrega automaticamente con vacunacion
|
|
Dado que estoy seleccionando servicios
|
|
Cuando selecciono "Vacunacion"
|
|
Entonces "Consulta clinica" deberia agregarse automaticamente
|
|
Y deberia ver nota "Incluye revision general"
|
|
Y no deberia poder quitar "Consulta clinica"
|
|
|
|
Escenario: Servicios combo con descuento
|
|
Dado que estoy seleccionando servicios
|
|
Cuando agrego los siguientes servicios:
|
|
| servicio |
|
|
| Vacunacion |
|
|
| Desparasitacion |
|
|
| Antipulgas |
|
|
Entonces deberia ver "Plan preventivo completo"
|
|
Y el total deberia incluir descuento de combo
|
|
|
|
Escenario: Castracion no disponible para mascota castrada
|
|
Dado que mi mascota esta marcada como castrada
|
|
Cuando veo los servicios disponibles
|
|
Entonces no deberia ver "Castracion"
|
|
|
|
# ============================================
|
|
# DATOS DE CONTACTO Y CUENTA
|
|
# ============================================
|
|
|
|
Escenario: Pre-llenado de datos para usuario logueado
|
|
Dado que estoy logueado como "maria@ejemplo.com"
|
|
Y tengo registrada mascota "Firulais"
|
|
Cuando inicio el flujo de turnero
|
|
Entonces mi direccion deberia estar pre-llenada
|
|
Y deberia poder seleccionar "Firulais" de mis mascotas
|
|
Y mis datos de contacto ya deberian estar completos
|
|
|
|
Escenario: Detectar usuario existente por email
|
|
Dado que soy usuario invitado
|
|
Y existe una cuenta con email "existente@ejemplo.com"
|
|
Cuando ingreso email "existente@ejemplo.com" en datos de contacto
|
|
Entonces deberia ver "Ya tenes cuenta con este email"
|
|
Y deberia ver opciones:
|
|
| opcion |
|
|
| Iniciar sesion |
|
|
| Continuar como invitado |
|
|
|
|
# ============================================
|
|
# EDGE CASES
|
|
# ============================================
|
|
|
|
Escenario: Usuario abandona flujo a mitad
|
|
Dado que complete los datos de mascota
|
|
Y cerre el navegador sin enviar
|
|
Cuando vuelvo a la pagina del turnero
|
|
Entonces deberia poder recuperar mi progreso
|
|
# Nota: datos guardados en localStorage o session
|
|
|
|
Escenario: Multiples mascotas en una solicitud
|
|
Dado que quiero atender a 2 mascotas
|
|
Cuando agrego mascota "Luna" tipo "Gato"
|
|
Y agrego mascota "Rocky" tipo "Perro"
|
|
Y selecciono servicios para cada una
|
|
Entonces deberia crearse una solicitud con 2 mascotas
|
|
Y el precio deberia reflejar ambas
|
|
|
|
Escenario: Franja horaria especifica
|
|
Dado que solo puedo por la mañana
|
|
Cuando selecciono franja "Mañana (9-12hs)"
|
|
Entonces la solicitud deberia registrar esa preferencia
|
|
# Nota: Es preferencia, no garantia
|