Radio de búsqueda de gasolineras
Implementa: api, web, app
Consume: api, web, app
Estado: activa
Última revisión: 2026-05-21T19:38:35Z
# Implementa: api, web, app
# Consume: api, web, app
# Estado: activa
# Última revisión: 2026-05-21T19:38:35Z
# Position: 5
Feature: Radio de búsqueda de gasolineras
El usuario puede ajustar el radio máximo de búsqueda para controlar
cuántas estaciones se incluyen en los resultados.
El rango permitido (min, max, step) los devuelve el API en el endpoint de
configuración de filtros. El frontend nunca hardcodea el rango ni la
configuración del slider.
Excepción — fallback inicial: antes de que el usuario abra el panel por
primera vez y sin radio persistido, el frontend usa 10 km como parámetro
de /cheapest y lo muestra en el subtítulo. El valor por defecto del API
(`radius_config.default`) solo se aplica cuando el usuario pulsa "Reiniciar".
El radio se envía como parámetro a /cheapest. El API filtra circularmente
y devuelve solo las estaciones dentro del radio indicado.
Background:
Given el API devuelve la configuración del radio: min, max, step y default
# Contrato: GET /v2/filters → { radius_config: { min, max, step, default } }
# Swagger: https://tanko-a4q2.onrender.com/tanko_docs_ad0df4baad113557
And el frontend usa estos valores para inicializar el slider
Scenario: Primera apertura sin preferencia guardada
Given el usuario nunca ha ajustado el radio
When abre el panel de filtros
Then el slider muestra 10 km (fallback hardcodeado)
And el CTA muestra "Aplicar filtros"
# El `radius_config.default` del API no se usa aquí — solo en "Reiniciar"
Scenario: Apertura con preferencia persistida válida
Given el usuario tiene guardado un radio de 5 km
And 5 km está dentro del rango actual del API
When abre el panel de filtros
Then el slider muestra 5 km
And el CTA muestra "Aplicar filtros"
Scenario: Valor persistido fuera del rango actual
Given el usuario tiene guardado un radio de 1 km
And el API devuelve un mínimo de 2 km
When abre el panel de filtros
Then el slider se clampea al default devuelto por el API
And el valor persistido se sobreescribe con el nuevo default
Scenario: El usuario ajusta el radio
Given el panel de filtros está abierto con radio 10 km
When el usuario arrastra el slider a 25 km y lo suelta
Then la lista de marcas se recarga con las disponibles en 25 km
And se persiste el valor 25 km
Scenario: Sin resultados en el radio seleccionado
Given el usuario está en una zona sin gasolineras cercanas
And ajusta el radio a 1 km y pulsa el CTA
Then la pantalla principal muestra el estado "Nada cerca"
Scenario: Reiniciar filtros
Given el usuario tiene el radio ajustado a 30 km
When pulsa "Reiniciar"
Then el slider vuelve al valor default devuelto por el API
And se borra el valor persistido
Scenario: Error al cargar la configuración de filtros
Given el usuario abre el panel de filtros
When el endpoint /filters no responde
Then el slider se muestra desactivado
And el CTA no es accionable
Scenario Outline: El slider respeta los límites del rango
Given el slider está configurado con min <min> km y max <max> km
When el usuario intenta arrastrar más allá del límite
Then el slider se detiene en <límite> km
Examples:
| min | max | límite |
| 1 | 50 | 1 |
| 1 | 50 | 50 |