Skip to content

Commit

Permalink
#184 nice to haves
Browse files Browse the repository at this point in the history
  • Loading branch information
vancamti committed May 9, 2023
1 parent b6e5964 commit d527b10
Show file tree
Hide file tree
Showing 3 changed files with 95 additions and 10 deletions.
8 changes: 6 additions & 2 deletions crabpy_pyramid/routes/adressenregister.py
Expand Up @@ -98,11 +98,15 @@ def includeme(config):
"adressenregister_get_perceel_by_id",
"/adressenregister/percelen/{perceel_id}",
)

crabpy_pyramid.add_route(
config,
"adressenregister_get_perceel_by_id_parts",
"/adressenregister/percelen/{perceel_id_part1}/{perceel_id_part2}",
)
crabpy_pyramid.add_route(
config,
"adressenregister_list_postinfo_by_gemeente",
"/adressenregister/gemeenten/{gemeente_naam}/postinfo",
"/adressenregister/gemeenten/{gemeente_naam_niscode}/postinfo",
)
crabpy_pyramid.add_route(
config,
Expand Down
71 changes: 65 additions & 6 deletions crabpy_pyramid/tests/test_functional.py
Expand Up @@ -451,8 +451,8 @@ def test_get_provincie_by_id(self):
res = self.testapp.get("/adressenregister/provincies/10000")
self.assertEqual("200 OK", res.status)
self.assertDictEqual(
{"gewest": {'niscode': '2000'}, "naam": "Antwerpen", "niscode": "10000"},
res.json
{"gewest": {"niscode": "2000"}, "naam": "Antwerpen", "niscode": "10000"},
res.json,
)

def test_get_provincie_by_unexisting_id(self):
Expand Down Expand Up @@ -518,7 +518,7 @@ def test_get_gemeente_adresregister_niscode(self):
)

def test_get_gemeente_crab_unexisting_niscode(self):
res = self.testapp.get("/adressenregister/gemeenten/00000", status=404, )
res = self.testapp.get("/adressenregister/gemeenten/00000", status=404)
self.assertEqual("404 Not Found", res.status)

def test_list_straten(self):
Expand Down Expand Up @@ -688,7 +688,6 @@ def test_error_other_then_404_400(self):
res.text
)


def test_get_adres_by_straat_and_huisnummer_and_busnummer_404(self):
with responses.RequestsMock() as rsps:
adressen_response = deepcopy(adressen)
Expand Down Expand Up @@ -789,6 +788,26 @@ def test_get_perceel_by_id(self):
res.json,
)

def test_get_perceel_by_id_parts(self):
with responses.RequestsMock() as rsps:
rsps.add(
method=rsps.GET,
url="https://api.basisregisters.vlaanderen.be/v2/percelen/13013C0384-02H003",
json=perceel,
status=200,
)
res = self.testapp.get("/adressenregister/percelen/13013C0384/02H003")
self.assertEqual("200 OK", res.status)
self.assertDictEqual(
{
"adressen": [{"id": "200001"}],
"id": "13013C0384-02H003",
"status": "gerealiseerd",
"uri": "https://data.vlaanderen.be/id/perceel/13013C0384-02H003",
},
res.json,
)

def test_get_perceel_by_id_404(self):
with responses.RequestsMock() as rsps:
rsps.add(
Expand All @@ -801,7 +820,7 @@ def test_get_perceel_by_id_404(self):
)
self.assertEqual("404 Not Found", res.status)

def test_adresregister_list_postinfo_by_gemeente(self):
def test_adresregister_list_postinfo_by_gemeente_naam(self):
with responses.RequestsMock() as rsps:
rsps.add(
method=rsps.GET,
Expand Down Expand Up @@ -841,6 +860,46 @@ def test_adresregister_list_postinfo_by_gemeente(self):
res.json,
)

def test_adresregister_list_postinfo_by_gemeente_niscode(self):
with responses.RequestsMock() as rsps:
rsps.add(
method=rsps.GET,
url="https://api.basisregisters.vlaanderen.be/v2/postinfo",
json=postinfos,
status=200,
)
rsps.add(
method=rsps.GET,
url="https://api.basisregisters.vlaanderen.be/v2/postinfo/1000",
json=postinfo_1000,
status=200,
)
rsps.add(
method=rsps.GET,
url="https://api.basisregisters.vlaanderen.be/v2/postinfo/1020",
json=postinfo_1020,
status=200,
)
res = self.testapp.get("/adressenregister/gemeenten/21004/postinfo")
self.assertEqual("200 OK", res.status)
self.assertListEqual(
[
{
"namen": ["BRUSSEL"],
"postcode": "1000",
"status": "gerealiseerd",
"uri": "https://data.vlaanderen.be/id/postinfo/1000",
},
{
"namen": ["Laken"],
"postcode": "1020",
"status": "gerealiseerd",
"uri": "https://data.vlaanderen.be/id/postinfo/1020",
},
],
res.json,
)

def test_adresregister_list_postinfo_by_gemeente_404(self):
with responses.RequestsMock() as rsps:
rsps.add(
Expand Down Expand Up @@ -879,7 +938,7 @@ def test_adresregister_get_postinfo_by_postcode_404(self):
rsps.add(
method=rsps.GET,
url="https://api.basisregisters.vlaanderen.be/v2/postinfo/1000",
headers={'accept': 'application/json'},
headers={"accept": "application/json"},
status=404,
)
res = self.testapp.get("/adressenregister/postinfo/1000", status=404)
Expand Down
26 changes: 24 additions & 2 deletions crabpy_pyramid/views/adressenregister.py
@@ -1,4 +1,5 @@
import logging
import re

import pycountry
from crabpy.client import AdressenRegisterClientException
Expand Down Expand Up @@ -291,6 +292,21 @@ def adressenregister_get_perceel_by_id(request):
return handle_gateway_response(Gateway.get_perceel_by_id, perceel_id=perceel_id)


@view_config(
route_name="adressenregister_get_perceel_by_id_parts",
renderer="adresreg_itemjson",
accept="application/json",
)
def adressenregister_get_perceel_by_id_parts(request):
request = set_http_caching(request, "adressenregister", "short")
Gateway = request.adressenregister_gateway()
perceel_id = (
f'{request.matchdict.get("perceel_id_part1")}'
f'-{request.matchdict.get("perceel_id_part2")}'
)
return handle_gateway_response(Gateway.get_perceel_by_id, perceel_id=perceel_id)


@view_config(
route_name="adressenregister_list_postinfo_by_gemeente",
renderer="adresreg_listjson",
Expand All @@ -299,9 +315,15 @@ def adressenregister_get_perceel_by_id(request):
def adressenregister_list_postinfo_by_gemeente(request):
request = set_http_caching(request, "adressenregister", "long")
Gateway = request.adressenregister_gateway()
gemeente_naam = request.matchdict.get("gemeente_naam")
gemeente_param = request.matchdict.get("gemeente_naam_niscode")
niscode_pattern = re.compile(r"^\d{5}$")
if niscode_pattern.match(gemeente_param):
gemeente = handle_gateway_response(
Gateway.get_gemeente_by_niscode, gemeente_param
)
gemeente_param = gemeente.naam()
adressen = handle_gateway_response(
Gateway.get_postinfo_by_gemeentenaam, gemeente_naam
Gateway.get_postinfo_by_gemeentenaam, gemeente_param
)

return range_return(request, adressen)
Expand Down

0 comments on commit d527b10

Please sign in to comment.