# Fuente: album/book/ops-templates/veterinarian/01-aceptar-solicitud.md
# Drive: 08. IT y Producto/Funcionalidades Plataforma Veterinario
# Tests Backend: pytest tests/contracts/solicitudes/test_service_requests.py
# Tests Frontend: npx playwright test vet-requests.spec.ts

Feature: Aceptar o rechazar solicitudes de servicio

  Como veterinario de la plataforma
  Quiero revisar y responder a solicitudes en mi zona
  Para gestionar mi agenda de visitas a domicilio

  Background:
    Given que estoy logueado como veterinario
    And tengo cobertura en los barrios "Palermo" y "Recoleta"
    And estoy en el dashboard de veterinario

  # ============================================
  # VER SOLICITUDES PENDIENTES
  # ============================================

  Scenario: Ver lista de solicitudes en mi zona
    When veo la seccion "Solicitudes pendientes"
    Then deberia ver solo solicitudes de "Palermo" y "Recoleta"
    And no deberia ver solicitudes de otros barrios

  Scenario: Ver detalle de solicitud
    Given que hay una solicitud pendiente
    When hago click en la solicitud
    Then deberia ver:
      | seccion         | contenido                          |
      | Dueno           | Nombre, telefono, direccion        |
      | Mascota         | Nombre, tipo, edad, foto           |
      | Servicios       | Lista de servicios solicitados     |
      | Fechas          | Fechas preferidas por el dueno     |
      | Historial       | Visitas anteriores si las hay      |

  # ============================================
  # ACEPTAR SOLICITUD
  # ============================================

  Scenario: Aceptar solicitud con fecha disponible
    Given que hay una solicitud para el barrio "Palermo"
    And el dueno prefiere fechas:
      | fecha       | franja  |
      | 2024-01-15  | Mañana  |
      | 2024-01-16  | Tarde   |
    And tengo disponibilidad el 15 de enero a las 10:00
    When hago click en "Aceptar"
    And selecciono fecha "15 de enero" hora "10:00"
    And confirmo la aceptacion
    Then la solicitud deberia pasar a estado "Coordinado"
    And deberia quedar asignada a mi
    And el dueno deberia recibir notificacion con mis datos
    And la visita deberia aparecer en mi agenda

  Scenario: Aceptar solicitud con datos de mascota que ya atendi
    Given que hay una solicitud para mascota "Luna"
    And yo atendi a "Luna" anteriormente
    When veo el detalle de la solicitud
    Then deberia ver badge "Paciente recurrente"
    And deberia ver el historial de mis visitas anteriores a Luna

  # ============================================
  # RECHAZAR SOLICITUD
  # ============================================

  Scenario Outline: Rechazar solicitud con motivo
    Given que hay una solicitud pendiente
    When hago click en "Rechazar"
    And selecciono motivo "<motivo>"
    And confirmo el rechazo
    Then la solicitud deberia desaparecer de mi lista
    And deberia seguir visible para otros veterinarios

    Examples:
      | motivo                      |
      | No tengo disponibilidad     |
      | Fuera de mi zona            |
      | No realizo este servicio    |
      | Otro                        |

  # ============================================
  # RACE CONDITIONS
  # ============================================

  Rule: Solo un veterinario puede aceptar cada solicitud

    Scenario: Otro vet acepta mientras estoy viendo
      Given que estoy viendo el detalle de una solicitud
      And otro veterinario acepta la misma solicitud
      When intento aceptarla
      Then deberia ver error "Esta solicitud ya fue aceptada"
      And deberia ser redirigido al listado

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

  Scenario: Solicitud urgente destacada
    Given que hay una solicitud marcada como "Urgente"
    When veo el listado de solicitudes
    Then deberia ver la solicitud con indicador de urgencia
    And deberia aparecer primero en la lista

  Scenario: No puedo aceptar con agenda completa
    Given que tengo mi agenda completa para las fechas de la solicitud
    When intento aceptar la solicitud
    Then deberia ver advertencia "No tienes disponibilidad en las fechas preferidas"
    And deberia poder proponer una fecha alternativa
