|
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