# language: es
# Fuente: album/book/ops-templates/pet-owner/03-gestion-mascotas.md
# Drive: 08. IT y Producto/Funcionalidades Plataforma Veterinario
# Tests Backend: pytest tests/contracts/mascotas/test_pets.py
# Tests Frontend: npx playwright test pets.spec.ts

Característica: Gestion de mascotas

  Como dueno de mascota registrado
  Quiero gestionar la informacion de mis mascotas
  Para tenerla actualizada y acceder a su historial medico

  Antecedentes:
    Dado que estoy logueado como dueno de mascota
    Y estoy en la seccion "Mis mascotas"

  # ============================================
  # AGREGAR MASCOTA
  # ============================================

  Escenario: Agregar mascota con datos minimos
    Cuando hago click en "Agregar mascota"
    Y completo el formulario:
      | campo  | valor  |
      | nombre | Luna   |
      | tipo   | Gato   |
    Y hago click en "Guardar"
    Entonces deberia ver "Luna" en mi lista de mascotas
    Y Luna deberia aparecer disponible en el turnero

  Escenario: Agregar mascota con datos completos
    Cuando hago click en "Agregar mascota"
    Y completo el formulario:
      | campo             | valor           |
      | nombre            | Rocky           |
      | tipo              | Perro           |
      | raza              | Labrador        |
      | fecha_nacimiento  | 2020-03-15      |
      | peso              | 25              |
      | sexo              | Macho           |
      | castrado          | Si              |
    Y subo una foto de Rocky
    Y hago click en "Guardar"
    Entonces deberia ver "Rocky" con su foto en mi lista
    Y deberia ver badge "Castrado"

  Esquema del escenario: Validacion de datos de mascota
    Cuando intento agregar mascota con <campo> igual a "<valor>"
    Entonces deberia ver error "<mensaje>"

    Ejemplos:
      | campo  | valor                          | mensaje                    |
      | nombre |                                | El nombre es obligatorio   |
      | nombre | A                              | Nombre muy corto           |
      | tipo   |                                | Selecciona el tipo         |
      | peso   | -5                             | El peso debe ser positivo  |
      | peso   | 500                            | Peso fuera de rango        |

  # ============================================
  # EDITAR MASCOTA
  # ============================================

  Escenario: Editar peso de mascota
    Dado que tengo una mascota "Luna" con peso 4kg
    Cuando edito a Luna
    Y cambio el peso a 5kg
    Y guardo los cambios
    Entonces Luna deberia mostrar peso "5 kg"

  Escenario: Marcar mascota como castrada
    Dado que tengo una mascota "Rocky" no castrado
    Cuando edito a Rocky
    Y marco "Esta castrado"
    Y guardo los cambios
    Entonces Rocky deberia mostrar badge "Castrado"
    Y el servicio "Castracion" no deberia aparecer para Rocky en el turnero

  Escenario: Actualizar foto de mascota
    Dado que tengo una mascota "Luna" sin foto
    Cuando edito a Luna
    Y subo una nueva foto
    Y guardo los cambios
    Entonces deberia ver la foto de Luna en su tarjeta

  # ============================================
  # ELIMINAR MASCOTA
  # ============================================

  Escenario: Eliminar mascota sin historial
    Dado que tengo una mascota "Nuevo" sin visitas
    Cuando hago click en "Eliminar" para Nuevo
    Y confirmo la eliminacion
    Entonces Nuevo no deberia aparecer en mi lista
    # Nota: Es soft delete

  Escenario: Eliminar mascota con historial medico
    Dado que tengo una mascota "Luna" con visitas anteriores
    Cuando hago click en "Eliminar" para Luna
    Entonces deberia ver advertencia "Luna tiene historial medico"
    Y deberia ver "El historial se conservara pero no podras verlo"
    Cuando confirmo la eliminacion
    Entonces Luna no deberia aparecer en mi lista

  Escenario: No puedo eliminar mascota con turno pendiente
    Dado que tengo una mascota "Rocky" con turno pendiente
    Cuando intento eliminar a Rocky
    Entonces deberia ver error "Rocky tiene turnos pendientes"
    Y deberia ver sugerencia "Cancela los turnos primero"

  # ============================================
  # VER HISTORIAL MEDICO
  # ============================================

  Escenario: Ver historial de visitas de mascota
    Dado que tengo una mascota "Luna" con 3 visitas completadas
    Cuando hago click en Luna
    Y voy a la seccion "Historial"
    Entonces deberia ver 3 visitas listadas
    Y deberian estar ordenadas por fecha descendente

  Escenario: Ver detalle de visita
    Dado que tengo una mascota "Luna" con visitas
    Cuando veo el historial de Luna
    Y hago click en la primera visita
    Entonces deberia ver:
      | campo          |
      | Fecha          |
      | Veterinario    |
      | Diagnostico    |
      | Tratamiento    |
      | Medicamentos   |

  Escenario: Mascota sin historial
    Dado que tengo una mascota "Nuevo" recien agregada
    Cuando veo el perfil de Nuevo
    Entonces la seccion "Historial" deberia estar vacia
    Y deberia ver mensaje "Aun no hay visitas registradas"
    Y deberia ver boton "Reservar primer turno"

  # ============================================
  # CASOS ESPECIALES
  # ============================================

  Escenario: Mascota heredada de cuenta invitado
    Dado que me registre con email "juan@test.com"
    Y previamente reserve turno como invitado para "Firulais"
    Cuando voy a "Mis mascotas"
    Entonces deberia ver "Firulais" en mi lista
    Y deberia ver su historial de visitas previas

  Escenario: Razas filtradas por tipo
    Cuando agrego una mascota tipo "Gato"
    Entonces las razas disponibles deberian ser razas de gato
    Y no deberia ver razas de perro como "Labrador"
