Files
soleprint/atlas/book/gherkin-samples/en/pet-owner/02-reservar-turno.feature
2025-12-31 09:07:27 -03:00

141 lines
5.2 KiB
Gherkin

# 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
Feature: 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
Background:
Given que estoy en la pagina del turnero
# ============================================
# VERIFICACION DE COBERTURA
# ============================================
Scenario: Verificar cobertura en zona disponible
When ingreso direccion "Av Santa Fe 1234, CABA"
Then deberia ver mensaje "Tenemos cobertura en tu zona"
And deberia poder continuar al siguiente paso
Scenario: Zona sin cobertura
When ingreso direccion "Calle Principal 100, Ushuaia"
Then deberia ver mensaje "Aun no tenemos cobertura en tu zona"
And deberia ver formulario "Avisame cuando lleguen"
# ============================================
# FLUJO COMPLETO POR TIPO DE USUARIO
# ============================================
Scenario Outline: Reservar turno como <tipo_usuario>
Given que soy un usuario <tipo_usuario>
And tengo cobertura en mi zona
When completo los datos de mi mascota:
| campo | valor |
| nombre | Luna |
| tipo | Gato |
| edad | 2 años |
| castrada | Si |
And selecciono servicios:
| servicio |
| Vacunacion |
And selecciono fechas preferidas:
| fecha | franja |
| 2024-01-15 | Mañana |
| 2024-01-16 | Tarde |
And completo datos de contacto con email "<email>"
And envio la solicitud
Then deberia crearse una solicitud en estado "Pendiente"
And el dueno deberia ser <estado_dueno>
And deberia recibir email de confirmacion
Examples:
| 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
# ============================================
Scenario: Servicios filtrados por tipo de mascota
Given que agregue una mascota tipo "Gato"
When veo los servicios disponibles
Then deberia ver "Vacuna triple felina"
And deberia ver "Vacuna antirabica"
But no deberia ver "Vacuna sextuple canina"
Scenario: Consulta clinica se agrega automaticamente con vacunacion
Given que estoy seleccionando servicios
When selecciono "Vacunacion"
Then "Consulta clinica" deberia agregarse automaticamente
And deberia ver nota "Incluye revision general"
And no deberia poder quitar "Consulta clinica"
Scenario: Servicios combo con descuento
Given que estoy seleccionando servicios
When agrego los siguientes servicios:
| servicio |
| Vacunacion |
| Desparasitacion |
| Antipulgas |
Then deberia ver "Plan preventivo completo"
And el total deberia incluir descuento de combo
Scenario: Castracion no disponible para mascota castrada
Given que mi mascota esta marcada como castrada
When veo los servicios disponibles
Then no deberia ver "Castracion"
# ============================================
# DATOS DE CONTACTO Y CUENTA
# ============================================
Scenario: Pre-llenado de datos para usuario logueado
Given que estoy logueado como "maria@ejemplo.com"
And tengo registrada mascota "Firulais"
When inicio el flujo de turnero
Then mi direccion deberia estar pre-llenada
And deberia poder seleccionar "Firulais" de mis mascotas
And mis datos de contacto ya deberian estar completos
Scenario: Detectar usuario existente por email
Given que soy usuario invitado
And existe una cuenta con email "existente@ejemplo.com"
When ingreso email "existente@ejemplo.com" en datos de contacto
Then deberia ver "Ya tenes cuenta con este email"
And deberia ver opciones:
| opcion |
| Iniciar sesion |
| Continuar como invitado |
# ============================================
# EDGE CASES
# ============================================
Scenario: Usuario abandona flujo a mitad
Given que complete los datos de mascota
And cerre el navegador sin enviar
When vuelvo a la pagina del turnero
Then deberia poder recuperar mi progreso
# Nota: datos guardados en localStorage o session
Scenario: Multiples mascotas en una solicitud
Given que quiero atender a 2 mascotas
When agrego mascota "Luna" tipo "Gato"
And agrego mascota "Rocky" tipo "Perro"
And selecciono servicios para cada una
Then deberia crearse una solicitud con 2 mascotas
And el precio deberia reflejar ambas
Scenario: Franja horaria especifica
Given que solo puedo por la mañana
When selecciono franja "Mañana (9-12hs)"
Then la solicitud deberia registrar esa preferencia
# Nota: Es preferencia, no garantia