base_adresse: add reverse endpoint result into address cache model (#53989)
This commit is contained in:
parent
54574eee45
commit
6193d0a8ca
|
@ -221,6 +221,11 @@ class BaseAdresse(BaseResource):
|
|||
if not feature['geometry']['type'] == 'Point':
|
||||
continue # skip unknown
|
||||
result = self.format_address_data(feature)
|
||||
address, created = AddressCacheModel.objects.get_or_create(
|
||||
api_id=result['id'], defaults={'data': result}
|
||||
)
|
||||
if not created:
|
||||
address.update_timestamp()
|
||||
break
|
||||
return result
|
||||
|
||||
|
|
|
@ -62,6 +62,7 @@ def api_adresse_data_gouv_fr_search(url, request):
|
|||
|
||||
|
||||
@urlmatch(netloc='^api-adresse.data.gouv.fr$', path='^/reverse/$')
|
||||
@remember_called
|
||||
def api_adresse_data_gouv_fr_reverse(url, request):
|
||||
return response(
|
||||
200,
|
||||
|
@ -103,7 +104,7 @@ def mock_api_adresse_data_gouv_fr_search():
|
|||
@pytest.fixture
|
||||
def mock_api_adresse_data_gouv_fr_reverse():
|
||||
with HTTMock(api_adresse_data_gouv_fr_reverse):
|
||||
yield None
|
||||
yield api_adresse_data_gouv_fr_reverse
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
|
|
|
@ -911,3 +911,30 @@ def test_base_adresse_addresses_data_change(mocked_get, app, base_adresse):
|
|||
AddressCacheModel.objects.all().delete()
|
||||
resp = app.get(endpoint, params={'q': 'plop'}, status=200)
|
||||
assert resp.json['data'][0]['text'] == 'changed'
|
||||
|
||||
|
||||
def test_base_adresse_reverse_cache(
|
||||
app, base_adresse, freezer, mock_api_adresse_data_gouv_fr_reverse, mock_api_adresse_data_gouv_fr_search
|
||||
):
|
||||
assert AddressCacheModel.objects.count() == 0
|
||||
resp = app.get('/base-adresse/%s/reverse?lon=-0.593775&lat=47.474633' % base_adresse.slug)
|
||||
assert mock_api_adresse_data_gouv_fr_reverse.call['count'] == 1
|
||||
|
||||
data = resp.json
|
||||
assert data['text'] == 'Rue Roger Halope 49000 Angers'
|
||||
|
||||
api_id = data['id']
|
||||
assert AddressCacheModel.objects.filter(api_id=api_id).exists()
|
||||
assert AddressCacheModel.objects.count() == 1
|
||||
first_timestamp = AddressCacheModel.objects.get().timestamp
|
||||
|
||||
resp = app.get('/base-adresse/%s/addresses?id=%s' % (base_adresse.slug, api_id))
|
||||
assert mock_api_adresse_data_gouv_fr_search.call['count'] == 0
|
||||
assert data['text'] == 'Rue Roger Halope 49000 Angers'
|
||||
assert 'address' in data
|
||||
|
||||
# check caching timestamp update
|
||||
freezer.move_to(datetime.timedelta(hours=1, seconds=1))
|
||||
resp = app.get('/base-adresse/%s/reverse?lon=-0.593775&lat=47.474633' % base_adresse.slug)
|
||||
assert mock_api_adresse_data_gouv_fr_reverse.call['count'] == 2
|
||||
assert AddressCacheModel.objects.get().timestamp > first_timestamp
|
||||
|
|
Loading…
Reference in New Issue