base adresse: pass lat/lon when geocoding (#33098)

This commit is contained in:
Frédéric Péters 2019-05-15 08:14:18 +02:00 committed by Thomas NOEL
parent d810f6799a
commit f424478578
2 changed files with 11 additions and 1 deletions

View File

@ -34,7 +34,7 @@ class BaseAdresse(BaseResource):
verbose_name = _('Base Adresse Web Service')
@endpoint(pattern='(?P<q>.+)?$')
def search(self, request, q, zipcode='', **kwargs):
def search(self, request, q, zipcode='', lat=None, lon=None, **kwargs):
if kwargs.get('format', 'json') != 'json':
raise NotImplementedError()
@ -46,6 +46,9 @@ class BaseAdresse(BaseResource):
query_args = {'q': q, 'limit': 1}
if zipcode:
query_args['postcode'] = zipcode
if lat and lon:
query_args['lat'] = lat
query_args['lon'] = lon
query = urlencode(query_args)
url = urlparse.urlunparse((scheme, netloc, path, params, query, fragment))

View File

@ -110,6 +110,13 @@ def test_base_adresse_search_qs_zipcode(app, base_adresse, mock_api_adresse_data
assert 'display_name' in resp.json[0]
@mock.patch('passerelle.utils.Request.get')
def test_base_adresse_search_qs_lat_lon(mocked_get, app, base_adresse):
resp = app.get('/base-adresse/%s/search?q=plop&lat=0&lon=1' % base_adresse.slug)
assert 'lat=0' in mocked_get.call_args[0][0]
assert 'lon=1' in mocked_get.call_args[0][0]
def test_base_adresse_search_qs_empty(app, base_adresse, mock_api_adresse_data_gouv_fr_search):
resp = app.get('/base-adresse/%s/search?q=' % base_adresse.slug)
assert len(resp.json) == 0