61 lines
2.0 KiB
Python
61 lines
2.0 KiB
Python
import json
|
|
from unittest import mock
|
|
|
|
import pytest
|
|
|
|
import tests.utils
|
|
from passerelle.contrib.adict.models import Adict
|
|
|
|
FAKE_FEATURE_INFO = json.dumps(
|
|
{
|
|
'type': 'FeatureCollection',
|
|
'features': [
|
|
{
|
|
'type': 'Feature',
|
|
'properties': {
|
|
'id': 51,
|
|
'type': 'secteur_maternelle',
|
|
'url': None,
|
|
'description': None,
|
|
'nom': 'NEUFELD',
|
|
},
|
|
'geometry': {},
|
|
}
|
|
],
|
|
}
|
|
)
|
|
|
|
|
|
@pytest.fixture
|
|
def connector(db):
|
|
return tests.utils.setup_access_rights(
|
|
Adict.objects.create(
|
|
slug='test',
|
|
service_root_url='http://adict.example.net/',
|
|
api_token='xyz',
|
|
sector_type='secteur_maternelle',
|
|
)
|
|
)
|
|
|
|
|
|
@mock.patch('passerelle.utils.Request.get')
|
|
def test_feature_info(mocked_get, app, connector):
|
|
endpoint = tests.utils.generic_endpoint_url('adict', 'feature_info', slug=connector.slug)
|
|
assert endpoint == '/adict/test/feature_info'
|
|
mocked_get.return_value = tests.utils.FakedResponse(content=FAKE_FEATURE_INFO, status_code=200)
|
|
resp = app.get(endpoint, params={'lat': '48.570472877', 'lon': '7.75659804'})
|
|
assert mocked_get.call_args[0][0] == 'http://adict.example.net/api/v1.0/secteurs'
|
|
assert mocked_get.call_args[1]['params']['x'] == '7.75659804'
|
|
assert mocked_get.call_args[1]['params']['y'] == '48.570472877'
|
|
assert resp.json['data']['nom'] == 'NEUFELD'
|
|
|
|
|
|
@mock.patch('passerelle.utils.Request.get')
|
|
def test_no_feature_info(mocked_get, app, connector):
|
|
endpoint = tests.utils.generic_endpoint_url('adict', 'feature_info', slug=connector.slug)
|
|
assert endpoint == '/adict/test/feature_info'
|
|
mocked_get.return_value = tests.utils.FakedResponse(content=json.dumps({'features': []}), status_code=200)
|
|
resp = app.get(endpoint, params={'lat': '48.570472877', 'lon': '7.75659804'})
|
|
assert resp.json['err'] == 1
|
|
assert resp.json['err_msg'] == 'not found'
|