69 |
69 |
|
70 |
70 |
@urlmatch(netloc='^photon.komoot.io$', path='^/api/$')
|
71 |
71 |
@remember_called
|
72 |
72 |
def photon_search(url, request):
|
73 |
73 |
return response(200, CONTENT, request=request)
|
74 |
74 |
|
75 |
75 |
|
76 |
76 |
@urlmatch(netloc='^photon.komoot.io$', path='^/reverse/$')
|
|
77 |
@remember_called
|
77 |
78 |
def photon_reverse(url, request):
|
78 |
79 |
return response(200, CONTENT, request=request)
|
79 |
80 |
|
80 |
81 |
|
81 |
82 |
@pytest.fixture
|
82 |
83 |
def mock_photon_search():
|
83 |
84 |
with HTTMock(photon_search):
|
84 |
85 |
yield photon_search
|
85 |
86 |
|
86 |
87 |
|
87 |
88 |
@pytest.fixture
|
88 |
89 |
def mock_photon_reverse():
|
89 |
90 |
with HTTMock(photon_reverse):
|
90 |
|
yield None
|
|
91 |
yield photon_reverse
|
91 |
92 |
|
92 |
93 |
|
93 |
94 |
@pytest.fixture
|
94 |
95 |
def photon(db):
|
95 |
96 |
return utils.setup_access_rights(Photon.objects.create(slug='test'))
|
96 |
97 |
|
97 |
98 |
|
98 |
99 |
@pytest.fixture
|
... | ... | |
300 |
301 |
# first user saves the form, data should not have changed
|
301 |
302 |
resp = app.get(endpoint, params={'id': address_id}, status=200)
|
302 |
303 |
assert resp.json['data'][0]['text'] == address_text
|
303 |
304 |
|
304 |
305 |
# when cache is cleared, we get the updated data
|
305 |
306 |
AddressCacheModel.objects.all().delete()
|
306 |
307 |
resp = app.get(endpoint, params={'q': 'plop'}, status=200)
|
307 |
308 |
assert 'changed' in resp.json['data'][0]['text']
|
|
309 |
|
|
310 |
|
|
311 |
def test_photon_reverse_cache(app, photon, freezer, mock_photon_reverse, mock_photon_search):
|
|
312 |
assert AddressCacheModel.objects.count() == 0
|
|
313 |
resp = app.get('/photon/%s/reverse?lon=4.8522272&lat=45.7587414' % photon.slug)
|
|
314 |
assert mock_photon_reverse.call['count'] == 1
|
|
315 |
|
|
316 |
data = resp.json
|
|
317 |
assert data['text'] == '208, Rue Garibaldi 69003 Lyon 3ème Arrondissement'
|
|
318 |
|
|
319 |
api_id = data['id']
|
|
320 |
assert AddressCacheModel.objects.filter(api_id=api_id).exists()
|
|
321 |
assert AddressCacheModel.objects.count() == 1
|
|
322 |
first_timestamp = AddressCacheModel.objects.get().timestamp
|
|
323 |
|
|
324 |
resp = app.get('/photon/%s/addresses?id=%s' % (photon.slug, api_id))
|
|
325 |
assert mock_photon_search.call['count'] == 0
|
|
326 |
assert data['text'] == '208, Rue Garibaldi 69003 Lyon 3ème Arrondissement'
|
|
327 |
assert 'address' in data
|
|
328 |
|
|
329 |
# check caching timestamp update
|
|
330 |
freezer.move_to(datetime.timedelta(hours=1, seconds=1))
|
|
331 |
resp = app.get('/photon/%s/reverse?lon=4.8522272&lat=45.7587414' % photon.slug)
|
|
332 |
assert mock_photon_reverse.call['count'] == 2
|
|
333 |
assert AddressCacheModel.objects.get().timestamp > first_timestamp
|
308 |
|
-
|