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