10 |
10 |
|
11 |
11 |
from passerelle.apps.base_adresse.models import BaseAdresse, StreetModel
|
12 |
12 |
|
13 |
|
from passerelle.views import WrongParameter
|
14 |
|
|
15 |
|
|
16 |
|
FAKED_CONTENT = '{"limit": 1, "attribution": "BAN", "version": "draft", "licence": "ODbL 1.0", "query": "plop", "type": "FeatureCollection", "features": [{"geometry": {"type": "Point", "coordinates": [-0.593775, 47.474633]}, "properties": {"citycode": "49007", "name": "Rue Roger Halope", "id": "49007_6950_be54bd", "city": "Angers", "context": "49, Maine-et-Loire, Pays de la Loire", "score": 0.14097272727272728, "label": "Rue Roger Halope 49000 Angers", "postcode": "49000", "type": "street"}, "type": "Feature"}]}'
|
|
13 |
FAKED_CONTENT = json.dumps({
|
|
14 |
"limit": 1,
|
|
15 |
"attribution": "BAN",
|
|
16 |
"version": "draft",
|
|
17 |
"licence": "ODbL 1.0",
|
|
18 |
"query": "plop",
|
|
19 |
"type": "FeatureCollection",
|
|
20 |
"features": [
|
|
21 |
{
|
|
22 |
"geometry": {
|
|
23 |
"type": "Point",
|
|
24 |
"coordinates": [-0.593775, 47.474633]
|
|
25 |
},
|
|
26 |
"properties": {
|
|
27 |
"citycode": "49007",
|
|
28 |
"name": "Rue Roger Halope",
|
|
29 |
"id": "49007_6950_be54bd",
|
|
30 |
"city": "Angers",
|
|
31 |
"context": "49, Maine-et-Loire, Pays de la Loire",
|
|
32 |
"score": 0.14097272727272728,
|
|
33 |
"label": "Rue Roger Halope 49000 Angers",
|
|
34 |
"postcode": "49000",
|
|
35 |
"type": "street"
|
|
36 |
},
|
|
37 |
"type": "Feature"
|
|
38 |
}
|
|
39 |
]
|
|
40 |
})
|
17 |
41 |
|
18 |
42 |
FAKE_DATA = ''
|
19 |
43 |
|
|
44 |
|
20 |
45 |
@pytest.fixture
|
21 |
46 |
def base_adresse(db):
|
22 |
47 |
return utils.setup_access_rights(BaseAdresse.objects.create(slug='base-adresse', zipcode='73'))
|
23 |
48 |
|
|
49 |
|
24 |
50 |
@pytest.fixture
|
25 |
51 |
def base_adresse_97x(db):
|
26 |
52 |
return utils.setup_access_rights(BaseAdresse.objects.create(slug='base-adresse',
|
27 |
53 |
zipcode='97425'))
|
28 |
54 |
|
|
55 |
|
29 |
56 |
@pytest.fixture
|
30 |
57 |
def base_adresse_corsica(db):
|
31 |
58 |
return utils.setup_access_rights(BaseAdresse.objects.create(slug='base-adresse',
|
32 |
59 |
zipcode='20000, 20100 '))
|
33 |
60 |
|
|
61 |
|
34 |
62 |
@pytest.fixture
|
35 |
63 |
def base_adresse_multiple(db):
|
36 |
64 |
return utils.setup_access_rights(BaseAdresse.objects.create(slug='base-adresse',
|
37 |
65 |
zipcode='73, 73100, 97425,20000 '))
|
38 |
66 |
|
|
67 |
|
39 |
68 |
@pytest.fixture
|
40 |
69 |
def street(db):
|
41 |
70 |
return StreetModel.objects.create(city=u'Chambéry',
|
... | ... | |
44 |
73 |
type=u'street',
|
45 |
74 |
citycode=u'73001')
|
46 |
75 |
|
|
76 |
|
47 |
77 |
@mock.patch('passerelle.utils.Request.get')
|
48 |
78 |
def test_base_adresse_search(mocked_get, app, base_adresse):
|
49 |
79 |
endpoint = utils.generic_endpoint_url('base-adresse', 'search', slug=base_adresse.slug)
|
... | ... | |
55 |
85 |
assert data['lon'] == '-0.593775'
|
56 |
86 |
assert data['display_name'] == 'Rue Roger Halope 49000 Angers'
|
57 |
87 |
|
|
88 |
|
58 |
89 |
@mock.patch('passerelle.utils.Request.get')
|
59 |
90 |
def test_base_adresse_search_path(mocked_get, app, base_adresse):
|
60 |
91 |
base_adresse.service_url = 'http://example.net/path/'
|
... | ... | |
68 |
99 |
assert data['lon'] == '-0.593775'
|
69 |
100 |
assert data['display_name'] == 'Rue Roger Halope 49000 Angers'
|
70 |
101 |
|
|
102 |
|
71 |
103 |
def test_base_adresse_search_qs(app, base_adresse, mock_api_adresse_data_gouv_fr_search):
|
72 |
104 |
resp = app.get('/base-adresse/%s/search?q=plop' % base_adresse.slug)
|
73 |
105 |
assert 'display_name' in resp.json[0]
|
... | ... | |
77 |
109 |
resp = app.get('/base-adresse/%s/search?q=plop&zipcode=49000' % base_adresse.slug)
|
78 |
110 |
assert 'display_name' in resp.json[0]
|
79 |
111 |
|
|
112 |
|
80 |
113 |
def test_base_adresse_search_qs_empty(app, base_adresse, mock_api_adresse_data_gouv_fr_search):
|
81 |
114 |
resp = app.get('/base-adresse/%s/search?q=' % base_adresse.slug)
|
82 |
115 |
assert len(resp.json) == 0
|
83 |
116 |
|
|
117 |
|
84 |
118 |
def test_base_adresse_search_qs_parameters_error(app, base_adresse,
|
85 |
119 |
mock_api_adresse_data_gouv_fr_search):
|
86 |
120 |
resp = app.get('/base-adresse/%s/search' % base_adresse.slug, status=400)
|
... | ... | |
105 |
139 |
assert data['address']['postcode'] == '49000'
|
106 |
140 |
assert data['address']['citycode'] == '49007'
|
107 |
141 |
|
|
142 |
|
108 |
143 |
@mock.patch('passerelle.utils.Request.get')
|
109 |
144 |
def test_base_adresse_reverse_path(mocked_get, app, base_adresse):
|
110 |
145 |
mocked_get.return_value = utils.FakedResponse(content=json.dumps({'features': []}), status_code=200)
|
111 |
146 |
base_adresse.service_url = 'http://example.net/path/'
|
112 |
147 |
base_adresse.save()
|
113 |
|
resp = app.get('/base-adresse/%s/reverse?lon=-0.593775&lat=47.474633' % base_adresse.slug)
|
|
148 |
app.get('/base-adresse/%s/reverse?lon=-0.593775&lat=47.474633' % base_adresse.slug)
|
114 |
149 |
assert mocked_get.call_args[0][0].startswith('http://example.net/path/reverse/?')
|
115 |
150 |
|
|
151 |
|
116 |
152 |
def test_base_adresse_streets_unaccent(app, base_adresse, street):
|
117 |
153 |
resp = app.get('/base-adresse/%s/streets?q=une rue tres acc' % base_adresse.slug)
|
118 |
154 |
data = json.loads(resp.body)
|
... | ... | |
124 |
160 |
assert result['zipcode'] == street.zipcode
|
125 |
161 |
assert result['id'] == street.id
|
126 |
162 |
|
|
163 |
|
127 |
164 |
@mock.patch('passerelle.utils.Request.get')
|
128 |
165 |
def test_base_adresse_command_update(mocked_get, db, base_adresse):
|
129 |
166 |
filepath = os.path.join(os.path.dirname(__file__), 'data', 'update_streets_test.bz2')
|
... | ... | |
142 |
179 |
call_command('cron', 'daily')
|
143 |
180 |
mocked_get.call_count == 2
|
144 |
181 |
|
|
182 |
|
145 |
183 |
@mock.patch('passerelle.utils.Request.get')
|
146 |
184 |
def test_base_adresse_command_hourly_update(mocked_get, db, base_adresse):
|
147 |
185 |
filepath = os.path.join(os.path.dirname(__file__), 'data', 'update_streets_test.bz2')
|
... | ... | |
154 |
192 |
call_command('cron', 'hourly')
|
155 |
193 |
mocked_get.call_count == 1
|
156 |
194 |
|
|
195 |
|
157 |
196 |
@mock.patch('passerelle.utils.Request.get')
|
158 |
197 |
def test_base_adresse_command_update_97x(mocked_get, db, base_adresse_97x):
|
159 |
198 |
filepath = os.path.join(os.path.dirname(__file__), 'data', 'update_streets_test.bz2')
|
... | ... | |
162 |
201 |
mocked_get.assert_called_once_with('http://bano.openstreetmap.fr/BAN_odbl/BAN_odbl_974-json.bz2')
|
163 |
202 |
assert StreetModel.objects.count() == 2
|
164 |
203 |
|
|
204 |
|
165 |
205 |
@mock.patch('passerelle.utils.Request.get')
|
166 |
206 |
def test_base_adresse_command_update_corsica(mocked_get, db, base_adresse_corsica):
|
167 |
207 |
filepath = os.path.join(os.path.dirname(__file__), 'data', 'update_streets_test.bz2')
|
... | ... | |
172 |
212 |
mocked_get.assert_any_call('http://bano.openstreetmap.fr/BAN_odbl/BAN_odbl_2B-json.bz2')
|
173 |
213 |
assert StreetModel.objects.count() == 0
|
174 |
214 |
|
|
215 |
|
175 |
216 |
@mock.patch('passerelle.utils.Request.get')
|
176 |
217 |
def test_base_adresse_command_update_multiple(mocked_get, db, base_adresse_multiple):
|
177 |
218 |
filepath = os.path.join(os.path.dirname(__file__), 'data', 'update_streets_test.bz2')
|
178 |
|
-
|