Descripción
El método search() del ListingRepository contiene lógica condicional compleja que combina múltiples filtros opcionales:
type
minPrice
maxPrice
guests
nights (minNights y maxNights)
Actualmente, el repositorio solo tiene tests para los métodos derivados (findByIsActiveTrue, etc.), pero no existe una batería completa de tests dedicada a search(), que es el método más crítico para la funcionalidad de filtrado del proyecto.
Es necesario crear un conjunto de tests que cubran todos los escenarios relevantes y validen que la query JPQL funciona correctamente en todas las combinaciones posibles.
Tareas
Crear tests unitarios con @DataJpaTest que cubran:
search() sin filtros
Debe devolver todos los listings.
Filtrado por type
Solo listings del tipo solicitado.
Filtrado por minPrice
pricePerNight >= minPrice.
Filtrado por maxPrice
pricePerNight <= maxPrice.
Filtrado por guests
maxGuests >= guests.
Filtrado por nights
Validar correctamente minNights y maxNights.
Revisar si la lógica actual es la deseada.
Combinación de filtros
type + price + guests + nights.
Sin resultados
search() debe devolver lista vacía cuando no hay coincidencias.
Criterios de aceptación
Todos los tests del método search() están implementados y pasan correctamente.
La lógica del filtro por nights queda definida y validada.
No se rompen los tests existentes del repositorio.
La cobertura del repositorio aumenta y cubre todos los caminos lógicos del método.
Notas
Este issue no modifica la lógica del método search().
Si durante la implementación se detecta que la lógica debe ajustarse (por ejemplo, en el filtro de nights), se abrirá un issue separado para modificar la query.
Descripción
El método search() del ListingRepository contiene lógica condicional compleja que combina múltiples filtros opcionales:
type
minPrice
maxPrice
guests
nights (minNights y maxNights)
Actualmente, el repositorio solo tiene tests para los métodos derivados (findByIsActiveTrue, etc.), pero no existe una batería completa de tests dedicada a search(), que es el método más crítico para la funcionalidad de filtrado del proyecto.
Es necesario crear un conjunto de tests que cubran todos los escenarios relevantes y validen que la query JPQL funciona correctamente en todas las combinaciones posibles.
Tareas
Crear tests unitarios con @DataJpaTest que cubran:
search() sin filtros
Debe devolver todos los listings.
Filtrado por type
Solo listings del tipo solicitado.
Filtrado por minPrice
pricePerNight >= minPrice.
Filtrado por maxPrice
pricePerNight <= maxPrice.
Filtrado por guests
maxGuests >= guests.
Filtrado por nights
Validar correctamente minNights y maxNights.
Revisar si la lógica actual es la deseada.
Combinación de filtros
type + price + guests + nights.
Sin resultados
search() debe devolver lista vacía cuando no hay coincidencias.
Criterios de aceptación
Todos los tests del método search() están implementados y pasan correctamente.
La lógica del filtro por nights queda definida y validada.
No se rompen los tests existentes del repositorio.
La cobertura del repositorio aumenta y cubre todos los caminos lógicos del método.
Notas
Este issue no modifica la lógica del método search().
Si durante la implementación se detecta que la lógica debe ajustarse (por ejemplo, en el filtro de nights), se abrirá un issue separado para modificar la query.