passerelle/tests/test_adict.py

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'