# language: es
# Fuente: album/book/ops-templates/pet-owner/01-registro.md
# Drive: 08. IT y Producto/Funcionalidades Plataforma Veterinario
# Tests Backend: pytest tests/contracts/common/test_users.py
# Tests Frontend: npx playwright test auth.spec.ts

Característica: Registro de usuario

  Como visitante de la plataforma
  Quiero poder crear una cuenta
  Para gestionar mis mascotas y reservar turnos

  # ============================================
  # CAMINO FELIZ
  # ============================================

  Escenario: Registro exitoso con datos validos
    Dado que estoy en la pagina de registro
    Cuando ingreso email "nuevo@ejemplo.com"
    Y ingreso contraseña "Password123"
    Y confirmo contraseña "Password123"
    Y acepto los terminos y condiciones
    Y hago click en "Crear cuenta"
    Entonces deberia ver mensaje "Te enviamos un email de verificacion"
    Y deberia recibir email de verificacion

  Escenario: Verificar email y activar cuenta
    Dado que me registre con email "nuevo@ejemplo.com"
    Y recibi el email de verificacion
    Cuando hago click en el link de verificacion
    Entonces mi cuenta deberia estar activa
    Y deberia ser redirigido al dashboard

  # ============================================
  # VALIDACIONES
  # ============================================

  Esquema del escenario: Registro con datos invalidos
    Dado que estoy en la pagina de registro
    Cuando ingreso email "<email>"
    Y ingreso contraseña "<password>"
    Y confirmo contraseña "<confirmacion>"
    Y hago click en "Crear cuenta"
    Entonces deberia ver error "<mensaje_error>"

    Ejemplos:
      | email              | password     | confirmacion | mensaje_error                        |
      | invalido           | Password123  | Password123  | Email invalido                       |
      | test@test.com      | 123          | 123          | Contraseña muy corta                 |
      | test@test.com      | password     | password     | Debe contener al menos un numero     |
      | test@test.com      | Password123  | Diferente123 | Las contraseñas no coinciden         |

  Escenario: Registro con email ya existente
    Dado que existe un usuario con email "existente@ejemplo.com"
    Y estoy en la pagina de registro
    Cuando ingreso email "existente@ejemplo.com"
    Y completo el resto del formulario correctamente
    Y hago click en "Crear cuenta"
    Entonces deberia ver error "Este email ya esta registrado"
    Y deberia ver link "Recuperar contraseña"

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

  Escenario: Registro linkea con cuenta invitado existente
    # Usuario que reservo turno como invitado y ahora quiere registrarse
    Dado que existe un usuario invitado con email "invitado@ejemplo.com"
    Y ese usuario tiene una mascota "Luna" registrada
    Y estoy en la pagina de registro
    Cuando me registro con email "invitado@ejemplo.com"
    Y verifico mi cuenta
    Entonces deberia ver mi mascota "Luna" en el dashboard
    Y deberia ver mis turnos anteriores

  Escenario: Registro desde flujo de turnero
    # Usuario empezo a reservar turno y decide crear cuenta
    Dado que estoy en el paso final del turnero
    Y ingrese mis datos de contacto
    Cuando hago click en "Crear cuenta para guardar mis datos"
    Entonces deberia ver formulario simplificado
    Y mi email ya deberia estar pre-llenado
    Y solo deberia ingresar contraseña

  Escenario: Reenviar email de verificacion
    Dado que me registre pero no verifique mi cuenta
    Y estoy en la pagina de login
    Cuando intento iniciar sesion
    Entonces deberia ver "Tu cuenta no esta verificada"
    Y deberia ver boton "Reenviar email"
    Cuando hago click en "Reenviar email"
    Entonces deberia recibir nuevo email de verificacion
