|
2 | 2 |
|
3 | 3 | from rest_framework import status
|
4 | 4 | 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 | +) |
6 | 11 |
|
7 | 12 | from nrc.datamodel.models import Kanaal
|
8 | 13 | from nrc.datamodel.tests.factories import KanaalFactory
|
@@ -46,25 +51,90 @@ def test_kanaal_create_nonunique(self):
|
46 | 51 | response.status_code, status.HTTP_400_BAD_REQUEST, response.data
|
47 | 52 | )
|
48 | 53 |
|
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): |
50 | 129 | """
|
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 |
53 | 132 | check if response contents status 405
|
54 | 133 | """
|
55 | 134 | kanaal = Kanaal.objects.create(naam="zaken")
|
56 | 135 | 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 |
| - ) |
66 | 136 |
|
67 |
| - response_delete = self.client.delete(kanaal_url, data) |
| 137 | + response_delete = self.client.delete(kanaal_url) |
68 | 138 |
|
69 | 139 | self.assertEqual(
|
70 | 140 | response_delete.status_code,
|
|
0 commit comments