solis: use optimized solis endpoint for street (lieu) search (#36483)

This commit is contained in:
Thomas NOËL 2019-09-29 18:06:38 +02:00
parent 674154a356
commit 8a449839e0
2 changed files with 22 additions and 4 deletions

View File

@ -172,10 +172,18 @@ class Solis(BaseResource):
'example_value': '9999'},
})
def referential(self, request, module, name, q=None, id=None, ignore=None, **kwargs):
endpoint = 'referentiels/%s/%s' % (module, name)
args = [(code, value) for code, value in kwargs.items() if code.startswith('code')]
if args:
endpoint += '?' + urlencode(args)
if (module == 'trans' and name == 'lieu' and 'codeDepartement' in kwargs
and 'codeCommune' in kwargs and q):
# use optimized endpoint for trans/lieu search
endpoint = 'referentiels/trans/nomlieu/%s/%s/%s' % (kwargs.pop('codeDepartement'),
kwargs.pop('codeCommune'), q)
q = None
else:
endpoint = 'referentiels/%s/%s' % (module, name)
args = [(code, value) for code, value in kwargs.items() if code.startswith('code')]
if args:
endpoint += '?' + urlencode(args)
content = self.request(endpoint)

View File

@ -508,6 +508,16 @@ def test_solis_referentiels(app, solis):
assert resp.json['err_desc'] == "error status:500 'boum', content:'crash'"
assert resp.json['data'] == {'json_content': None, 'status_code': 500}
# optimized trans/lieu search
requests_get.return_value = utils.FakedResponse(content='{"lieux":[]}', status_code=200)
resp = app.get(url + '/trans/lieu/', status=200)
assert requests_get.call_args[0][0].endswith('/solisapi/referentiels/trans/lieu')
resp = app.get(url + '/trans/lieu/?codeDepartement=1&codeCommune=2&q=search', status=200)
assert requests_get.call_args[0][0].endswith('/solisapi/referentiels/trans/nomlieu/1/2/search')
resp = app.get(url + '/trans/lieu/?codeDepartement=1&codeCommune=2&codeLieu=3', status=200)
assert 'referentiels/trans/lieu?' in requests_get.call_args[0][0]
assert 'codeLieu=3' in requests_get.call_args[0][0]
def test_solis_referential_item(app, solis):
# full opened access