Estado de apertura de una gasolinera (triestado)
Implementa: api
Consume: web, app
Estado: activa
Última revisión: 2026-05-15
# Implementa: api
# Consume: web, app
# Estado: activa
# Última revisión: 2026-05-15
Feature: Estado de apertura de una gasolinera (triestado)
El campo `is_open` en la respuesta puede tener tres valores distintos.
Es un triestado, no un booleano — null significa "no sabemos", no "cerrado".
Confundir null con false llevaría al frontend a mostrar "CERRADO" en
estaciones cuyo horario simplemente no está disponible, induciendo al
usuario a descartarlas incorrectamente.
Background:
Given el API evalúa `is_open` en la zona horaria Europe/Madrid
Scenario: Estación con horario 24h siempre aparece como abierta
Given una estación con `always_open: true`
When el API calcula el estado de apertura
Then `is_open` es `true`
Scenario: Estación abierta en el tramo horario actual
Given una estación con horario L-V 07:00-22:00
And la consulta se realiza un miércoles a las 10:00
When el API calcula el estado de apertura
Then `is_open` es `true`
Scenario: Estación cerrada fuera de su tramo horario
Given una estación con horario L-V 07:00-22:00 y Sáb 08:00-21:00
And la consulta se realiza un domingo a cualquier hora
When el API calcula el estado de apertura
Then `is_open` es `false`
Scenario: Horario desconocido — el API no puede determinar si está abierta
Given una estación cuyo horario no pudo ser parseado (`schedule_parsed` es null)
When el API calcula el estado de apertura
Then `is_open` es `null`
Scenario Outline: El frontend muestra el badge correcto según el triestado
Given una estación con `is_open` igual a <valor>
When el frontend renderiza el indicador de apertura
Then muestra <badge>
Examples:
| valor | badge |
| true | "ABIERTO" (indicador verde) |
| false | "CERRADO" (indicador rojo) |
| null | nada — omite el badge |