|
21 | 21 | ForeignKeyTargetViewSet, |
22 | 22 | ManyToManySourceViewSet, |
23 | 23 | NestedRelatedSourceViewSet, |
| 24 | + URLModelViewSet, |
24 | 25 | ) |
25 | 26 |
|
26 | 27 |
|
@@ -182,6 +183,42 @@ def test_list_with_default_included_resources(self, client, foreign_key_source): |
182 | 183 | } |
183 | 184 | ] == result["included"] |
184 | 185 |
|
| 186 | + @pytest.mark.urls(__name__) |
| 187 | + def test_list_allow_overwriting_url_field(self, client, url_instance): |
| 188 | + """ |
| 189 | + Test overwriting of url is possible. |
| 190 | +
|
| 191 | + URL_FIELD_NAME which is set to 'url' per default is used as self in links. |
| 192 | + However if field is overwritten and not a HyperlinkedIdentityField it should be allowed |
| 193 | + to use as a attribute as well. |
| 194 | + """ |
| 195 | + |
| 196 | + url = reverse("urlmodel-list") |
| 197 | + response = client.get(url) |
| 198 | + assert response.status_code == status.HTTP_200_OK |
| 199 | + data = response.json()["data"] |
| 200 | + assert data == [ |
| 201 | + { |
| 202 | + "type": "URLModel", |
| 203 | + "id": str(url_instance.pk), |
| 204 | + "attributes": {"text": "Url", "url": "https://example.com"}, |
| 205 | + } |
| 206 | + ] |
| 207 | + |
| 208 | + @pytest.mark.urls(__name__) |
| 209 | + def test_list_allow_overwiritng_url_with_sparse_fields(self, client, url_instance): |
| 210 | + url = reverse("urlmodel-list") |
| 211 | + response = client.get(url, data={"fields[URLModel]": "text"}) |
| 212 | + assert response.status_code == status.HTTP_200_OK |
| 213 | + data = response.json()["data"] |
| 214 | + assert data == [ |
| 215 | + { |
| 216 | + "type": "URLModel", |
| 217 | + "id": str(url_instance.pk), |
| 218 | + "attributes": {"text": "Url"}, |
| 219 | + } |
| 220 | + ] |
| 221 | + |
185 | 222 | @pytest.mark.urls(__name__) |
186 | 223 | def test_retrieve(self, client, model): |
187 | 224 | url = reverse("basic-model-detail", kwargs={"pk": model.pk}) |
@@ -495,6 +532,7 @@ def patch(self, request, *args, **kwargs): |
495 | 532 | # configuration in general |
496 | 533 | router = SimpleRouter() |
497 | 534 | router.register(r"basic_models", BasicModelViewSet, basename="basic-model") |
| 535 | +router.register(r"url_models", URLModelViewSet) |
498 | 536 | router.register(r"foreign_key_sources", ForeignKeySourceViewSet) |
499 | 537 | router.register(r"foreign_key_targets", ForeignKeyTargetViewSet) |
500 | 538 | router.register( |
|
0 commit comments