# language: es
# Fuente: album/book/ops-templates/backoffice/02-gestion-usuarios.md
# Drive: 05. ATC - Operaciones/Procedimientos
# Tests Backend: pytest tests/contracts/mascotas/test_pet_owners.py
# Tests Frontend: npx playwright test admin-users.spec.ts

Característica: Gestion de usuarios

  Como administrador del backoffice
  Quiero gestionar duenos y veterinarios
  Para mantener la base de usuarios actualizada

  Antecedentes:
    Dado que estoy logueado como administrador
    Y estoy en el backoffice

  # ============================================
  # GESTION DE DUENOS
  # ============================================

  Escenario: Buscar dueno de mascota
    Dado que estoy en la seccion "Duenos"
    Cuando busco "maria@ejemplo.com"
    Entonces deberia ver a Maria Garcia en los resultados
    Y deberia ver sus mascotas listadas
    Y deberia ver cantidad de turnos

  Escenario: Ver perfil completo de dueno
    Dado que encontre a "Maria Garcia"
    Cuando hago click en su perfil
    Entonces deberia ver:
      | seccion             | contenido                    |
      | Datos personales    | Nombre, email, telefono      |
      | Direcciones         | Direcciones registradas      |
      | Mascotas            | Lista de mascotas            |
      | Historial           | Solicitudes anteriores       |
      | Pagos               | Historial de pagos           |

  Escenario: Editar datos de dueno
    Dado que estoy viendo el perfil de un dueno
    Cuando hago click en "Editar"
    Y cambio el telefono a "1155559999"
    Y guardo los cambios
    Entonces el telefono deberia actualizarse
    Y deberia registrarse quien hizo el cambio

  Esquema del escenario: Filtrar duenos por tipo
    Dado que estoy en la lista de duenos
    Cuando filtro por tipo "<tipo>"
    Entonces solo deberia ver usuarios <tipo>

    Ejemplos:
      | tipo        |
      | Registrados |
      | Invitados   |

  # ============================================
  # GESTION DE VETERINARIOS
  # ============================================

  Escenario: Ver lista de veterinarios
    Cuando voy a la seccion "Veterinarios"
    Entonces deberia ver listado de todos los vets
    Y cada vet deberia mostrar:
      | campo           |
      | Nombre          |
      | Matricula       |
      | Zonas           |
      | Estado          |
      | Visitas mes     |

  Escenario: Agregar nuevo veterinario
    Dado que estoy en la seccion "Veterinarios"
    Cuando hago click en "Agregar veterinario"
    Y completo los datos:
      | campo          | valor                |
      | Nombre         | Dr. Juan Perez       |
      | Matricula      | MV-12345             |
      | Email          | jperez@ejemplo.com   |
      | Telefono       | 1155551234           |
      | Especialidades | Clinica general      |
    Y selecciono zonas de cobertura:
      | zona      |
      | Palermo   |
      | Recoleta  |
    Y genero credenciales de acceso
    Y guardo
    Entonces deberia crearse el veterinario
    Y deberia poder loguearse con sus credenciales

  Escenario: Desactivar veterinario sin citas pendientes
    Dado que el veterinario "Dr. Lopez" no tiene citas pendientes
    Cuando abro su perfil
    Y hago click en "Desactivar"
    Y confirmo la desactivacion
    Entonces Dr. Lopez deberia estar inactivo
    Y no deberia recibir nuevas solicitudes
    Y no deberia poder loguearse

  Escenario: Intentar desactivar veterinario con citas pendientes
    Dado que el veterinario "Dra. Garcia" tiene 3 citas pendientes
    Cuando intento desactivarla
    Entonces deberia ver advertencia "Tiene 3 citas pendientes"
    Y deberia ver opciones:
      | opcion                         |
      | Reasignar citas y desactivar   |
      | Cancelar                       |

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

  Escenario: Fusionar cuentas duplicadas
    Dado que hay dos cuentas para el mismo dueno:
      | cuenta  | email              | mascotas |
      | Cuenta1 | maria@gmail.com    | Luna     |
      | Cuenta2 | maria@hotmail.com  | Rocky    |
    Cuando selecciono ambas cuentas
    Y hago click en "Fusionar"
    Y elijo Cuenta1 como principal
    Y confirmo
    Entonces deberia existir solo Cuenta1
    Y deberia tener ambas mascotas
    Y el historial deberia combinarse

  Escenario: Convertir invitado a registrado
    Dado que hay un usuario invitado con email "invitado@test.com"
    Cuando abro su perfil
    Y hago click en "Enviar invitacion a registrarse"
    Entonces deberia enviarse email con link de registro
    Y el usuario podra crear contraseña y activar cuenta
