Completed
Push — master ( 0e2af0...ec5bb6 )
by
unknown
9s
created

get_Perceel_object()   A

Complexity

Conditions 1

Size

Total Lines 14

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
c 1
b 0
f 0
dl 0
loc 14
rs 9.4285
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
23
# gewest en provincies
24
25
gewest_mock = Mock()
26
27
antwerpen = Mock()
28
antwerpen.naam = "Antwerpen"
29
antwerpen.gewest = gewest_mock
30
antwerpen.niscode = 10000
31
32
vlbranbant = Mock()
33
vlbranbant.naam = "Vlaams-Brabant"
34
vlbranbant.gewest = gewest_mock
35
vlbranbant.niscode = 20001
36
37
wvlaanderen = Mock()
38
wvlaanderen.naam = "West-Vlaanderen"
39
wvlaanderen.gewest = gewest_mock
40
wvlaanderen.niscode = 30000
41
42
ovlaanderen = Mock()
43
ovlaanderen.naam = "Oost-Vlaanderen"
44
ovlaanderen.gewest = gewest_mock
45
ovlaanderen.niscode = 40000
46
47
limburg = Mock()
48
limburg.naam = "Limburg"
49
limburg.gewest = gewest_mock
50
limburg.niscode = 70000
51
52
# Knokke-Heist
53
54
pk_8300_mock = Mock()
55
pk_8300_mock.id = 8300
56
57
pk_8301_mock = Mock()
58
pk_8301_mock.id = 8301
59
60
ns_num_6_sub_mock = Mock()
61
ns_num_6_sub_mock.id = 1441952
62
ns_num_6_sub_mock.huisnummer_id = 270059
63
ns_num_6_sub_mock.subadres = "1"
64
65
ns_num_69_sub_mock = Mock()
66
ns_num_69_sub_mock.id = 1442188
67
ns_num_69_sub_mock.huisnummer_id = 882821
68
ns_num_69_sub_mock.subadres = "11"
69
70
ns_num_6_mock = Mock()
71
ns_num_6_mock.id = 270059
72
ns_num_6_mock.straat_id = 48086
73
ns_num_6_mock.huisnummer = "6"
74
ns_num_6_mock.subadressen = [ns_num_6_sub_mock]
75
ns_num_6_mock.postkanton = pk_8300_mock
76
77
ns_num_68_mock = Mock()
78
ns_num_68_mock.id = 887821
79
ns_num_68_mock.straat_id = 48086
80
ns_num_68_mock.huisnummer = "68"
81
ns_num_68_mock.subadressen = [ns_num_69_sub_mock]
82
ns_num_68_mock.postkanton = pk_8300_mock
83
84
ns_num_69_mock = Mock()
85
ns_num_69_mock.id = 882821
86
ns_num_69_mock.straat_id = 43086
87
ns_num_69_mock.huisnummer = "69"
88
ns_num_69_mock.subadressen = []
89
ns_num_69_mock.postkanton = pk_8300_mock
90
91
nieuwstraat_mock = Mock()
92
nieuwstraat_mock.id = 48086
93
nieuwstraat_mock.gemeente_id = 191
94
nieuwstraat_mock.label = "Nieuwstraat"
95
nieuwstraat_mock.huisnummers = [ns_num_6_mock, ns_num_68_mock]
96
97
knokke_mock = Mock()
98
knokke_mock.id = 191
99
knokke_mock.naam = "Knokke-Heist"
100
knokke_mock.niscode = 31043
101
knokke_mock.provincie = wvlaanderen
102
knokke_mock.straten = [nieuwstraat_mock]
103
knokke_mock.postkantons = [pk_8300_mock, pk_8301_mock]
104
105
# Lier
106
107
pk_2500_mock = Mock()
108
pk_2500_mock.id = 2500
109
110
lier_mock = Mock()
111
lier_mock.id = 36
112
lier_mock.naam = "Lier"
113
lier_mock.niscode = 12021
114
lier_mock.provincie = antwerpen
115
lier_mock.straten = []
116
lier_mock.postkantons = [pk_2500_mock]
117
118
# Leuven
119
120
leuven_mock = Mock()
121
leuven_mock.id = 143
122
leuven_mock.naam = "Leuven"
123
leuven_mock.niscode = 24062
124
leuven_mock.provincie = vlbranbant
125
leuven_mock.straten = []
126
leuven_mock.postkantons = []
127
128
gewest_mock.gemeentes = [knokke_mock, lier_mock, leuven_mock]
129
130
# ---------------
131
132
gewest_mock_dict = {1: gewest_mock, 2: gewest_mock, 3: gewest_mock}
133
gemeente_mock_dict = {191: knokke_mock, 36: lier_mock, 143: leuven_mock}
134
gemeente_niscode_mock_dict = {31043: knokke_mock, 12021: lier_mock, 24062: leuven_mock}
135
straten_mock_dict = {48086: nieuwstraat_mock}
136
num_mock_dict = {270059: ns_num_6_mock, 882821: ns_num_69_mock, 887821: ns_num_68_mock}
137
subadres_mock_dict = {1441952: ns_num_6_sub_mock, 1442188: ns_num_69_sub_mock}
138
139
140
def list_gemeenten(gewest_id):
141
    if gewest_id in gewest_mock_dict:
142
        return gewest_mock_dict[gewest_id].gemeentes
143
    else:
144
        return None
145
146
147
def get_gemeente_by_id(id):
148
    if id in gemeente_mock_dict:
149
        return gemeente_mock_dict[id]
150
    else:
151
        raise GatewayRuntimeException("ongeldige gemeente", Mock())
152
153
154
def get_gemeente_by_niscode(niscode):
155
    if niscode in gemeente_niscode_mock_dict:
156
        return gemeente_niscode_mock_dict[niscode]
157
    else:
158
        raise GatewayRuntimeException("ongeldige gemeente", Mock())
159
160
161
def get_straat_by_id(id):
162
    if id in straten_mock_dict:
163
        return straten_mock_dict[id]
164
    else:
165
        raise GatewayRuntimeException("ongeldige straat", Mock())
166
167
168
def get_huisnummer_by_id(id):
169
    if id in num_mock_dict:
170
        return num_mock_dict[id]
171
    else:
172
        raise GatewayRuntimeException("ongeldig huisnummer", Mock())
173
174
175
def get_subadres_by_id(id):
176
    if id in subadres_mock_dict:
177
        return subadres_mock_dict[id]
178
    else:
179
        raise GatewayRuntimeException("ongeldig subadres", Mock())
180
181
182
def get_postkanton_by_huisnummer(hn_id):
183
    if hn_id in num_mock_dict:
184
        return num_mock_dict[hn_id].postkanton
185
    else:
186
        return None
187
188
189
def list_postkantons_by_gemeente(gem_id):
190
    if gem_id in gemeente_mock_dict:
191
        return gemeente_mock_dict[gem_id].postkantons
192
    else:
193
        return None
194
195
196
def list_provincies(gew_id):
197
    if gew_id == 2:
198
        return [antwerpen, vlbranbant, wvlaanderen, ovlaanderen, limburg]
199
    else:
200
        return []
201
202
203
crab_gateway_mock = Mock()
204
crab_gateway_mock.get_gemeente_by_id = get_gemeente_by_id
205
crab_gateway_mock.get_straat_by_id = get_straat_by_id
206
crab_gateway_mock.get_huisnummer_by_id = get_huisnummer_by_id
207
crab_gateway_mock.get_subadres_by_id = get_subadres_by_id
208
crab_gateway_mock.get_postkanton_by_huisnummer = get_postkanton_by_huisnummer
209
crab_gateway_mock.list_postkantons_by_gemeente = list_postkantons_by_gemeente
210
crab_gateway_mock.list_gemeenten = list_gemeenten
211
crab_gateway_mock.list_provincies = list_provincies
212
crab_gateway_mock.get_gemeente_by_niscode = get_gemeente_by_niscode
213
214
afdeling1 = Mock()
215
afdeling1.id = 66666
216
afdeling1.naam = "test "
217
afdeling1.gemeente.id = 12004
218
219
afdeling2 = Mock()
220
afdeling2.id = 24505
221
afdeling2.naam = "LEUVEN  5 AFD"
222
afdeling2.gemeente.id = 24062
223
224
afdeling3 = Mock()
225
afdeling3.id = 123456
226
afdeling3.naam = "test x"
227
afdeling3.gemeente.id = 31043
228
229
230
def list_kadastrale_afdelingen():
231
    return [afdeling1, afdeling2, afdeling3]
232
233
234
capakey_gateway_mock = Mock()
235
capakey_gateway_mock.list_kadastrale_afdelingen = list_kadastrale_afdelingen
236
237
238
def text_(s, encoding='latin-1', errors='strict'):
239
    """ If ``s`` is an instance of ``binary_type``, return
240
    ``s.decode(encoding, errors)``, otherwise return ``s``"""
241
    # True if we are running on Python 3.
242
    PY3 = sys.version_info[0] == 3
243
    if PY3:
244
        binary_type = bytes
245
    else:
246
        binary_type = str
247
    if isinstance(s, binary_type):
248
        return s.decode(encoding, errors)
249
    return s
250
251
252
with open(os.path.join(os.path.dirname(__file__), 'fixtures/get_gemeente_results.json'), 'rb') as f:
253
    get_gemeente_results = json.loads(text_(f.read()))
254
with open(os.path.join(os.path.dirname(__file__), 'fixtures/get_provincie_results.json'), 'rb') as f:
255
    get_provincie_results = json.loads(text_(f.read()))
256
257
258
def mock_geozoekdiensten_response(base_url='http://geozoekdienst.en', response_status=200):
259
    def callback(request):
260
        resp_body = [{'naam': 'gemeente'}]
261
        headers = {'content_type': 'application/json'}
262
        return response_status, headers, json.dumps(resp_body)
263
264
    responses.add_callback(
265
        responses.POST,
266
        re.compile(r'^({0}).+'.format(base_url)),
267
        callback=callback)
268
    return base_url
269
270
271
def mock_geozoekdiensten_get_gemeente_response(len_results, base_url='http://geozoekdienst.en'):
272
    def callback(request):
273
        if len_results == 2:
274
            resp_body = get_gemeente_results
275
        elif len_results == 1:
276
            resp_body = [{'naam': 'gemeente', 'id': 'niscode'}]
277
        else:
278
            resp_body = []
279
        headers = {'content_type': 'application/json'}
280
        return 200, headers, json.dumps(resp_body)
281
282
    responses.add_callback(
283
        responses.POST,
284
        re.compile(r'^({0}).+'.format(base_url)),
285
        callback=callback)
286
    return base_url
287
288
289
def get_Perceel_object():
290
    return Perceel(
291
        id=1,
292
        type='https://id.erfgoed.net/vocab/ontology#LocatieElementPerceel',
293
        resource_object_id=9999,
294
        provincie_niscode=20001,
295
        provincie_naam='Vlaams-Brabant',
296
        gemeente_niscode=24062,
297
        gemeente_naam='Leuven',
298
        gemeente_crab_id=143,
299
        afdeling='LEUVEN  5 AFD',
300
        sectie='F',
301
        perceel='0415/00F000',
302
        capakey='24505F0415/00F000',
303
    )
304
305
306
def get_LocatieAdres_object():
307
    return LocatieAdres(
308
        id=2,
309
        type='https://id.erfgoed.net/vocab/ontology#LocatieElementAdres',
310
        resource_object_id=9999,
311
        provincie_niscode=20001,
312
        provincie_naam='Vlaams-Brabant',
313
        gemeente_niscode=24062,
314
        gemeente_naam='Leuven',
315
        gemeente_crab_id=143,
316
        straat_id=34819,
317
        straat='Fonteinstraat',
318
        huisnummer_id=201984,
319
        huisnummer='75',
320
        subadres_id=2,
321
        subadres='test2',
322
        postcode='3000',
323
        land='BE'
324
    )
325
326
327
def get_OpenbaarDomein_object():
328
    return OpenbaarDomein(
329
        id=3,
330
        type='https://id.erfgoed.net/vocab/ontology#LocatieElementOpenbaarDomein',
331
        resource_object_id=9999,
332
        provincie_niscode=20001,
333
        provincie_naam='Vlaams-Brabant',
334
        gemeente_niscode=24062,
335
        gemeente_naam='Leuven',
336
        gemeente_crab_id=143,
337
        omschrijving='Universiteitsbibliotheek Leuven',
338
    )
339
340
341
def get_LocatieElement_object():
342
    return LocatieElement(
343
        id=4,
344
        type='https://id.erfgoed.net/vocab/ontology#LocatieElement',
345
        resource_object_id=9999,
346
        provincie_niscode=20001,
347
        provincie_naam='Vlaams-Brabant',
348
        gemeente_niscode=24062,
349
        gemeente_naam='Leuven',
350
        gemeente_crab_id=143
351
    )
352