# 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 Dado que soy un 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 "" Y envio la solicitud Entonces deberia crearse una solicitud en estado "Pendiente" Y el dueno deberia ser 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