141 lines
5.2 KiB
Gherkin
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
|