Escribe tests para fetchUpstream
El fix del timeout llegó pero nada lo prueba. Escribe los tests que consolidan el nuevo comportamiento antes de que pueda regresar silenciosamente.
El PR #214 fue mergeado. fetchUpstream ahora devuelve null cuando una petición supera el timeout en lugar de quedarse colgada — una mejora real. Pero no hay ningún test que lo cubra.
Eso significa que la próxima persona que toque esta función no tiene red de seguridad. Un refactor, una limpieza bien intencionada, un merge que salga un poco mal — cualquiera de estos podría deshacer silenciosamente el comportamiento del timeout sin ninguna advertencia del CI.
Tu trabajo es escribir los tests que hacen explícito y permanente este comportamiento.
La situación
request.ts ya está implementado y funciona. request.test.ts existe pero está vacío. La función tiene tres comportamientos que vale la pena fijar:
- Devuelve una
Responsecuando el upstream responde normalmente. - Devuelve
null— no lanza — cuando la petición supera el timeout. - Siempre limpia el timer interno después de la llamada, tanto si tuvo éxito como si no.
El tercero es sutil. Un timer que no se limpia mantiene vivo el proceso de Node.js más tiempo del necesario. Es el tipo de cosa que causa tests intermitentes en otros archivos.
Lo que harás
- Leer
request.tspara entender qué hace la función y cuándo devuelvenull. - Escribir tres tests en
request.test.tscubriendo los comportamientos anteriores. - Ejecutar los tests y asegurarte de que los tres pasan.
Cuándo está listo
- El test del happy path pasa: una respuesta normal se devuelve correctamente.
- El test del timeout pasa: la función devuelve
nully no lanza. - El test de limpieza pasa:
clearTimeoutse llama exactamente una vez después de cada llamada.
Mockea fetch globalmente — no hagas peticiones de red reales. Para el caso de timeout, rechaza con un DOMException llamado 'AbortError', que es lo que lanza AbortController cuando aborta una señal.