Completed
Push — master ( 7194ea...f1a201 )
by
unknown
01:15
created

deelgemeenten_list()   A

Complexity

Conditions 1

Size

Total Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
c 0
b 0
f 0
dl 0
loc 2
rs 10
1
# -*- coding: utf-8 -*-
2
import json
3
import os
4
import re
5
import sys
6
7
import responses
8
from crabpy.gateway.exception import GatewayRuntimeException
9
10
try:
11
    from unittest.mock import Mock
12
except ImportError:
13
    from mock import Mock  # pragma: no cover
14
15
from oe_geoutils.data.models import (
16
    LocatieElement,
17
    LocatieAdres,
18
    Perceel,
19
    OpenbaarDomein,
20
)
21
22
# gewest en provincies
23
24
gewest_mock = Mock()
25
26
antwerpen = Mock()
27
antwerpen.naam = "Antwerpen"
28
antwerpen.gewest = gewest_mock
29
antwerpen.niscode = 10000
30
31
vlbranbant = Mock()
32
vlbranbant.naam = "Vlaams-Brabant"
33
vlbranbant.gewest = gewest_mock
34
vlbranbant.niscode = 20001
35
36
wvlaanderen = Mock()
37
wvlaanderen.naam = "West-Vlaanderen"
38
wvlaanderen.gewest = gewest_mock
39
wvlaanderen.niscode = 30000
40
41
ovlaanderen = Mock()
42
ovlaanderen.naam = "Oost-Vlaanderen"
43
ovlaanderen.gewest = gewest_mock
44
ovlaanderen.niscode = 40000
45
46
limburg = Mock()
47
limburg.naam = "Limburg"
48
limburg.gewest = gewest_mock
49
limburg.niscode = 70000
50
51
# Knokke-Heist
52
53
pk_8300_mock = Mock()
54
pk_8300_mock.id = 8300
55
56
pk_3000_mock = Mock()
57
pk_3000_mock.id = 3000
58
59
pk_8301_mock = Mock()
60
pk_8301_mock.id = 8301
61
62
pk_2610_mock = Mock()
63
pk_2610_mock.id = 2610
64
65
pk_2180_mock = Mock()
66
pk_2180_mock.id = 2180
67
68
ns_num_6_sub_mock = Mock()
69
ns_num_6_sub_mock.id = 1441952
70
ns_num_6_sub_mock.huisnummer_id = 270059
71
ns_num_6_sub_mock.subadres = "1"
72
73
ns_num_69_sub_mock = Mock()
74
ns_num_69_sub_mock.id = 1442188
75
ns_num_69_sub_mock.huisnummer_id = 882821
76
ns_num_69_sub_mock.subadres = "11"
77
78
ns_num_6_mock = Mock()
79
ns_num_6_mock.id = 270059
80
ns_num_6_mock.straat_id = 48086
81
ns_num_6_mock.huisnummer = "6"
82
ns_num_6_mock.subadressen = [ns_num_6_sub_mock]
83
ns_num_6_mock.postkanton = pk_8300_mock
84
85
ns_num_40_2180_mock = Mock()
86
ns_num_40_2180_mock.id = 2292449
87
ns_num_40_2180_mock.straat_id = 356
88
ns_num_40_2180_mock.huisnummer = "40"
89
ns_num_40_2180_mock.subadressen = []
90
ns_num_40_2180_mock.postkanton = pk_2180_mock
91
92
ns_num_40_2610_mock = Mock()
93
ns_num_40_2610_mock.id = 4228194
94
ns_num_40_2610_mock.straat_id = 355
95
ns_num_40_2610_mock.huisnummer = "40"
96
ns_num_40_2610_mock.subadressen = []
97
ns_num_40_2610_mock.postkanton = pk_2610_mock
98
99
ns_num_75_34819_mock = Mock()
100
ns_num_75_34819_mock.id = 201984
101
ns_num_75_34819_mock.straat_id = 34819
102
ns_num_75_34819_mock.huisnummer = "75"
103
ns_num_75_34819_mock.postkanton = pk_3000_mock
104
105
ns_num_68_mock = Mock()
106
ns_num_68_mock.id = 887821
107
ns_num_68_mock.straat_id = 48086
108
ns_num_68_mock.huisnummer = "68"
109
ns_num_68_mock.subadressen = [ns_num_69_sub_mock]
110
ns_num_68_mock.postkanton = pk_8300_mock
111
112
ns_num_69_mock = Mock()
113
ns_num_69_mock.id = 882821
114
ns_num_69_mock.straat_id = 43086
115
ns_num_69_mock.huisnummer = "69"
116
ns_num_69_mock.subadressen = []
117
ns_num_69_mock.postkanton = pk_8300_mock
118
119
nieuwstraat_mock = Mock()
120
nieuwstraat_mock.id = 48086
121
nieuwstraat_mock.gemeente_id = 191
122
nieuwstraat_mock.label = "Nieuwstraat"
123
nieuwstraat_mock.huisnummers = [ns_num_6_mock, ns_num_68_mock]
124
125
bist_2180_mock = Mock()
126
bist_2180_mock.id = 356
127
bist_2180_mock.gemeente_id = 2
128
bist_2180_mock.label = "Bist"
129
bist_2180_mock.huisnummers = [ns_num_40_2180_mock]
130
131
bist_2610_mock = Mock()
132
bist_2610_mock.id = 355
133
bist_2610_mock.gemeente_id = 2
134
bist_2610_mock.label = "Bist"
135
bist_2610_mock.huisnummers = [ns_num_40_2610_mock]
136
137
fontein_mock = Mock()
138
fontein_mock.id = 34819
139
fontein_mock.label = "Fonteinstraat"
140
fontein_mock.gemeente_id = 143
141
fontein_mock.huisnummers = [ns_num_75_34819_mock]
142
143
knokke_mock = Mock()
144
knokke_mock.id = 191
145
knokke_mock.naam = "Knokke-Heist"
146
knokke_mock.niscode = 31043
147
knokke_mock.provincie = wvlaanderen
148
knokke_mock.straten = [nieuwstraat_mock]
149
knokke_mock.postkantons = [pk_8300_mock, pk_8301_mock]
150
151
# Lier
152
153
pk_2500_mock = Mock()
154
pk_2500_mock.id = 2500
155
156
lier_mock = Mock()
157
lier_mock.id = 36
158
lier_mock.naam = "Lier"
159
lier_mock.niscode = 12021
160
lier_mock.provincie = antwerpen
161
lier_mock.straten = []
162
lier_mock.postkantons = [pk_2500_mock]
163
164
# Leuven
165
166
leuven_mock = Mock()
167
leuven_mock.id = 143
168
leuven_mock.naam = "Leuven"
169
leuven_mock.niscode = 24062
170
leuven_mock.provincie = vlbranbant
171
leuven_mock.straten = [fontein_mock]
172
leuven_mock.postkantons = []
173
174
# Antwerpen
175
176
antwerpen_mock = Mock()
177
antwerpen_mock.id = 2
178
antwerpen_mock.naam = "Antwerpen"
179
antwerpen_mock.niscode = 11002
180
antwerpen_mock.provincie = antwerpen
181
antwerpen_mock.straten = [bist_2610_mock, bist_2180_mock]
182
antwerpen_mock.postkantons = []
183
184
gewest_mock.gemeentes = [knokke_mock, lier_mock, leuven_mock, antwerpen_mock]
185
186
# ---------------
187
188
gewest_mock_dict = {1: gewest_mock, 2: gewest_mock, 3: gewest_mock}
189
gemeente_mock_dict = {191: knokke_mock, 36: lier_mock, 143: leuven_mock, 2: antwerpen_mock}
190
gemeente_niscode_mock_dict = {31043: knokke_mock, 12021: lier_mock, 24062: leuven_mock, 11002: antwerpen_mock}
191
deelgemeente_parent_niscode_mock_dict = {24062: [
192
    Mock(naam='Heverlee', gemeente_niscode=24062, id=None),
193
    Mock(naam='Kessel - Lo', gemeente_niscode=24062, id='24061X'),
194
    Mock(naam='Wilsele', gemeente_niscode=24062, id='24062X')]}
195
straten_mock_dict = {48086: nieuwstraat_mock, 355: bist_2610_mock, 356: bist_2180_mock, 34819: fontein_mock}
196
num_mock_dict = {270059: ns_num_6_mock, 882821: ns_num_69_mock, 887821: ns_num_68_mock, 2292449: ns_num_40_2180_mock,
197
                 4228194: ns_num_40_2610_mock, 201984: ns_num_75_34819_mock}
198
subadres_mock_dict = {1441952: ns_num_6_sub_mock, 1442188: ns_num_69_sub_mock}
199
200
201
def list_gemeenten(gewest_id):
202
    if gewest_id in gewest_mock_dict:
203
        return gewest_mock_dict[gewest_id].gemeentes
204
    else:
205
        return None
206
207
208
def get_gemeente_by_id(id):
209
    if id in gemeente_mock_dict:
210
        return gemeente_mock_dict[id]
211
    else:
212
        raise GatewayRuntimeException("ongeldige gemeente", Mock())
213
214
215
def get_gemeente_by_niscode(niscode):
216
    if niscode in gemeente_niscode_mock_dict:
217
        return gemeente_niscode_mock_dict[niscode]
218
    else:
219
        raise GatewayRuntimeException("ongeldige gemeente", Mock())
220
221
222
def list_deelgemeenten_by_gemeente(gemeente):
223
    return deelgemeente_parent_niscode_mock_dict[gemeente.niscode]
224
225
226
def deelgemeenten_list():
227
    return {"24062X": {'naam': 'Wilsele', 'gemeente_niscode': 24062, 'id': '24062X'}}
228
229
230
def get_straat_by_id(id):
231
    if id in straten_mock_dict:
232
        return straten_mock_dict[id]
233
    else:
234
        raise GatewayRuntimeException("ongeldige straat", Mock())
235
236
237
def get_huisnummer_by_id(id):
238
    if id in num_mock_dict:
239
        return num_mock_dict[id]
240
    else:
241
        raise GatewayRuntimeException("ongeldig huisnummer", Mock())
242
243
244
def get_subadres_by_id(id):
245
    if id in subadres_mock_dict:
246
        return subadres_mock_dict[id]
247
    else:
248
        raise GatewayRuntimeException("ongeldig subadres", Mock())
249
250
251
def get_postkanton_by_huisnummer(hn_id):
252
    if hn_id in num_mock_dict:
253
        return num_mock_dict[hn_id].postkanton
254
    else:
255
        return None
256
257
258
def list_postkantons_by_gemeente(gem_id):
259
    if gem_id in gemeente_mock_dict:
260
        return gemeente_mock_dict[gem_id].postkantons
261
    else:
262
        return None
263
264
265
def list_provincies(gew_id):
266
    if gew_id == 2:
267
        return [antwerpen, vlbranbant, wvlaanderen, ovlaanderen, limburg]
268
    else:
269
        return []
270
271
272
crab_gateway_mock = Mock(deelgemeenten=deelgemeenten_list())
273
crab_gateway_mock.get_gemeente_by_id = get_gemeente_by_id
274
crab_gateway_mock.get_straat_by_id = get_straat_by_id
275
crab_gateway_mock.get_huisnummer_by_id = get_huisnummer_by_id
276
crab_gateway_mock.get_subadres_by_id = get_subadres_by_id
277
crab_gateway_mock.get_postkanton_by_huisnummer = get_postkanton_by_huisnummer
278
crab_gateway_mock.list_postkantons_by_gemeente = list_postkantons_by_gemeente
279
crab_gateway_mock.list_gemeenten = list_gemeenten
280
crab_gateway_mock.list_provincies = list_provincies
281
crab_gateway_mock.get_gemeente_by_niscode = get_gemeente_by_niscode
282
crab_gateway_mock.list_deelgemeenten_by_gemeente = list_deelgemeenten_by_gemeente
283
afdeling1 = Mock()
284
afdeling1.id = 66666
285
afdeling1.naam = "test "
286
afdeling1.gemeente.id = 12004
287
288
afdeling2 = Mock()
289
afdeling2.id = 24505
290
afdeling2.naam = "LEUVEN  5 AFD"
291
afdeling2.gemeente.id = 24062
292
293
afdeling3 = Mock()
294
afdeling3.id = 123456
295
afdeling3.naam = "test x"
296
afdeling3.gemeente.id = 31043
297
298
299
def list_kadastrale_afdelingen():
300
    return [afdeling1, afdeling2, afdeling3]
301
302
303
capakey_gateway_mock = Mock()
304
capakey_gateway_mock.list_kadastrale_afdelingen = list_kadastrale_afdelingen
305
306
307
def text_(s, encoding='latin-1', errors='strict'):
308
    """ If ``s`` is an instance of ``binary_type``, return
309
    ``s.decode(encoding, errors)``, otherwise return ``s``"""
310
    # True if we are running on Python 3.
311
    PY3 = sys.version_info[0] == 3
312
    if PY3:
313
        binary_type = bytes
314
    else:
315
        binary_type = str
316
    if isinstance(s, binary_type):
317
        return s.decode(encoding, errors)
318
    return s
319
320
321
with open(os.path.join(os.path.dirname(__file__), 'fixtures/get_gemeente_results.json'), 'rb') as f:
322
    get_gemeente_results = json.loads(text_(f.read()))
323
with open(os.path.join(os.path.dirname(__file__), 'fixtures/get_provincie_results.json'), 'rb') as f:
324
    get_provincie_results = json.loads(text_(f.read()))
325
326
327
def mock_geozoekdiensten_response(base_url='http://geozoekdienst.en', response_status=200):
328
    def callback(request):
329
        resp_body = [{'naam': 'gemeente'}]
330
        headers = {'content_type': 'application/json'}
331
        return response_status, headers, json.dumps(resp_body)
332
333
    responses.add_callback(
334
        responses.POST,
335
        re.compile(r'^({0}).+'.format(base_url)),
336
        callback=callback)
337
    return base_url
338
339
340
def mock_geozoekdiensten_get_gemeente_response(len_results, base_url='http://geozoekdienst.en'):
341
    def callback(request):
342
        if len_results == 2:
343
            resp_body = get_gemeente_results
344
        elif len_results == 1:
345
            resp_body = [{'naam': 'gemeente', 'id': 'niscode'}]
346
        else:
347
            resp_body = []
348
        headers = {'content_type': 'application/json'}
349
        return 200, headers, json.dumps(resp_body)
350
351
    responses.add_callback(
352
        responses.POST,
353
        re.compile(r'^({0}).+'.format(base_url)),
354
        callback=callback)
355
    return base_url
356
357
358
def get_Perceel_object():
359
    return Perceel(
360
        id=1,
361
        type='https://id.erfgoed.net/vocab/ontology#LocatieElementPerceel',
362
        resource_object_id=9999,
363
        provincie_niscode=20001,
364
        provincie_naam='Vlaams-Brabant',
365
        gemeente_niscode=24062,
366
        gemeente_naam='Leuven',
367
        gemeente_crab_id=143,
368
        afdeling='LEUVEN  5 AFD',
369
        sectie='F',
370
        perceel='0415/00F000',
371
        capakey='24505F0415/00F000',
372
        deelgemeente_niscode='24086X',
373
        deelgemeente_naam='Oud-Heverlee'
374
    )
375
376
377
def get_LocatieAdres_object():
378
    return LocatieAdres(
379
        id=2,
380
        type='https://id.erfgoed.net/vocab/ontology#LocatieElementAdres',
381
        resource_object_id=9999,
382
        provincie_niscode=20001,
383
        provincie_naam='Vlaams-Brabant',
384
        gemeente_niscode=24062,
385
        gemeente_naam='Leuven',
386
        gemeente_crab_id=143,
387
        straat_id=34819,
388
        straat='Fonteinstraat',
389
        huisnummer_id=201984,
390
        huisnummer='75',
391
        subadres_id=2,
392
        subadres='test2',
393
        postcode='3000',
394
        land='BE',
395
        deelgemeente_niscode='24086X',
396
        deelgemeente_naam='Oud-Heverlee'
397
    )
398
399
400
def get_OpenbaarDomein_object():
401
    return OpenbaarDomein(
402
        id=3,
403
        type='https://id.erfgoed.net/vocab/ontology#LocatieElementOpenbaarDomein',
404
        resource_object_id=9999,
405
        provincie_niscode=20001,
406
        provincie_naam='Vlaams-Brabant',
407
        gemeente_niscode=24062,
408
        gemeente_naam='Leuven',
409
        gemeente_crab_id=143,
410
        omschrijving='Universiteitsbibliotheek Leuven',
411
        deelgemeente_niscode='24086X',
412
        deelgemeente_naam='Oud-Heverlee'
413
    )
414
415
416
def get_LocatieElement_object():
417
    return LocatieElement(
418
        id=4,
419
        type='https://id.erfgoed.net/vocab/ontology#LocatieElement',
420
        resource_object_id=9999,
421
        provincie_niscode=20001,
422
        provincie_naam='Vlaams-Brabant',
423
        gemeente_niscode=24062,
424
        gemeente_naam='Leuven',
425
        gemeente_crab_id=143,
426
        deelgemeente_niscode='24086X',
427
        deelgemeente_naam='Oud-Heverlee'
428
    )
429