Skip to content

Commit b069673

Browse files
committed
✅ [#207] Add tests for PUT and PATCH on Kanaal
1 parent c7324e5 commit b069673

File tree

1 file changed

+84
-14
lines changed

1 file changed

+84
-14
lines changed

src/nrc/api/tests/test_kanaal.py

+84-14
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,12 @@
22

33
from rest_framework import status
44
from rest_framework.test import APITestCase
5-
from vng_api_common.tests import JWTAuthMixin, get_operation_url
5+
from vng_api_common.tests import (
6+
JWTAuthMixin,
7+
get_operation_url,
8+
get_validation_errors,
9+
reverse,
10+
)
611

712
from nrc.datamodel.models import Kanaal
813
from nrc.datamodel.tests.factories import KanaalFactory
@@ -46,25 +51,90 @@ def test_kanaal_create_nonunique(self):
4651
response.status_code, status.HTTP_400_BAD_REQUEST, response.data
4752
)
4853

49-
def test_kanaal_update_delete(self):
54+
def test_kanaal_update(self):
55+
kanaal = KanaalFactory.create(
56+
naam="zaken",
57+
documentatie_link="https://example.com/doc",
58+
filters=["zaaktype"],
59+
)
60+
kanaal_url = reverse(kanaal)
61+
data = {
62+
"naam": "zaken",
63+
"documentatie_link": "https://example.com/updated",
64+
"filters": ["zaaktype", "zaaktype.catalogus"],
65+
}
66+
67+
response = self.client.put(kanaal_url, data)
68+
69+
self.assertEqual(response.status_code, status.HTTP_200_OK, response.data)
70+
71+
# check parsing to model
72+
data = response.json()
73+
kanaal = Kanaal.objects.get()
74+
self.assertEqual(kanaal.naam, "zaken")
75+
self.assertEqual(kanaal.documentatie_link, "https://example.com/updated")
76+
self.assertEqual(kanaal.filters, ["zaaktype", "zaaktype.catalogus"])
77+
78+
def test_kanaal_partial_update(self):
79+
kanaal = KanaalFactory.create(
80+
naam="zaken",
81+
documentatie_link="https://example.com/doc",
82+
filters=["zaaktype"],
83+
)
84+
kanaal_url = reverse(kanaal)
85+
data = {"filters": ["zaaktype", "zaaktype.catalogus"]}
86+
87+
response = self.client.patch(kanaal_url, data)
88+
89+
self.assertEqual(response.status_code, status.HTTP_200_OK, response.data)
90+
91+
# check parsing to model
92+
data = response.json()
93+
kanaal = Kanaal.objects.get()
94+
self.assertEqual(kanaal.naam, "zaken")
95+
self.assertEqual(kanaal.documentatie_link, "https://example.com/doc")
96+
self.assertEqual(kanaal.filters, ["zaaktype", "zaaktype.catalogus"])
97+
98+
def test_kanaal_cannot_update_naam(self):
99+
kanaal = KanaalFactory.create(
100+
naam="zaken",
101+
documentatie_link="https://example.com/doc",
102+
filters=["zaaktype"],
103+
)
104+
kanaal_url = reverse(kanaal)
105+
data = {
106+
"naam": "modified",
107+
"documentatie_link": "https://example.com/updated",
108+
"filters": ["zaaktype", "zaaktype.catalogus"],
109+
}
110+
111+
response = self.client.put(kanaal_url, data)
112+
113+
self.assertEqual(
114+
response.status_code, status.HTTP_400_BAD_REQUEST, response.data
115+
)
116+
117+
# check parsing to model
118+
data = response.json()
119+
120+
error = get_validation_errors(response, "naam")
121+
self.assertEqual(error["code"], "wijzigen-niet-toegelaten")
122+
123+
kanaal = Kanaal.objects.get()
124+
self.assertEqual(kanaal.naam, "zaken")
125+
self.assertEqual(kanaal.documentatie_link, "https://example.com/doc")
126+
self.assertEqual(kanaal.filters, ["zaaktype"])
127+
128+
def test_kanaal_delete(self):
50129
"""
51-
test /kanaal PUT, DELETE:
52-
attempt to update and destroy kanaal via request
130+
test /kanaal DELETE:
131+
attempt to destroy kanaal via request
53132
check if response contents status 405
54133
"""
55134
kanaal = Kanaal.objects.create(naam="zaken")
56135
kanaal_url = get_operation_url("kanaal_read", uuid=kanaal.uuid)
57-
data = {"documentatie_link": "https://example.com/doc"}
58-
59-
response_put = self.client.put(kanaal_url, data)
60-
61-
self.assertEqual(
62-
response_put.status_code,
63-
status.HTTP_405_METHOD_NOT_ALLOWED,
64-
response_put.data,
65-
)
66136

67-
response_delete = self.client.delete(kanaal_url, data)
137+
response_delete = self.client.delete(kanaal_url)
68138

69139
self.assertEqual(
70140
response_delete.status_code,

0 commit comments

Comments
 (0)