SaarthiAI / tests /test_autocomplete.py
parthmax24's picture
working proto 5
8b96826
Raw
History Blame Contribute Delete
1.65 kB
"""Geoapify autocomplete tool with mocked HTTP."""
import requests as requests_lib
from app.tools import geocode
def make_geoapify(features):
return {"features": features}
def feature(name, formatted, lat, lon):
return {"properties": {"name": name, "formatted": formatted, "lat": lat, "lon": lon}}
def test_autocomplete_returns_lucknow_suggestions(monkeypatch, fake_response):
payload = make_geoapify([
feature("Hazratganj", "Hazratganj, Lucknow, UP, India", 26.8488, 80.9436),
feature("Hazratganj Metro", "Hazratganj Metro Station, Lucknow", 26.8501, 80.9442),
])
monkeypatch.setattr(geocode.requests, "get", lambda *a, **k: fake_response(payload))
results = geocode.autocomplete_place("hazra")
assert len(results) == 2
assert results[0]["name"] == "Hazratganj"
assert results[0]["lat"] == 26.8488
def test_autocomplete_filters_out_of_city_results(monkeypatch, fake_response):
payload = make_geoapify([
feature("Hazrat Nizamuddin", "Hazrat Nizamuddin, Delhi", 28.59, 77.25),
])
monkeypatch.setattr(geocode.requests, "get", lambda *a, **k: fake_response(payload))
assert geocode.autocomplete_place("hazrat") == []
def test_autocomplete_empty_on_network_failure(monkeypatch):
def boom(*args, **kwargs):
raise requests_lib.Timeout("slow")
monkeypatch.setattr(geocode.requests, "get", boom)
assert geocode.autocomplete_place("hazra") == []
def test_autocomplete_empty_without_key(monkeypatch):
from app import config
monkeypatch.setattr(config, "geoapify_key", lambda: None)
assert geocode.autocomplete_place("hazra") == []