|
25 | 25 | ForeignKeyTarget,
|
26 | 26 | ManyToManySource,
|
27 | 27 | ManyToManyTarget,
|
| 28 | + NestedRelatedSource, |
28 | 29 | )
|
29 | 30 | from tests.serializers import BasicModelSerializer
|
30 | 31 |
|
@@ -313,6 +314,48 @@ class Meta:
|
313 | 314 | assert get_related_resource_type(field) == output
|
314 | 315 |
|
315 | 316 |
|
| 317 | +@pytest.mark.parametrize( |
| 318 | + "field,output,related_field_kwargs", |
| 319 | + [ |
| 320 | + ( |
| 321 | + "m2m_source.targets", |
| 322 | + "ManyToManyTarget", |
| 323 | + {"many": True, "queryset": ManyToManyTarget.objects.all()}, |
| 324 | + ), |
| 325 | + ( |
| 326 | + "m2m_target.sources.", |
| 327 | + "ManyToManySource", |
| 328 | + {"many": True, "queryset": ManyToManySource.objects.all()}, |
| 329 | + ), |
| 330 | + ( |
| 331 | + "fk_source.target", |
| 332 | + "ForeignKeyTarget", |
| 333 | + {"many": True, "queryset": ForeignKeyTarget.objects.all()}, |
| 334 | + ), |
| 335 | + ( |
| 336 | + "fk_target.source", |
| 337 | + "ForeignKeySource", |
| 338 | + {"many": True, "queryset": ForeignKeySource.objects.all()}, |
| 339 | + ), |
| 340 | + ], |
| 341 | +) |
| 342 | +def test_get_related_resource_type_from_nested_source( |
| 343 | + db, field, output, related_field_kwargs |
| 344 | +): |
| 345 | + class RelatedResourceTypeSerializer(serializers.ModelSerializer): |
| 346 | + relation = serializers.ResourceRelatedField( |
| 347 | + source=field, **related_field_kwargs |
| 348 | + ) |
| 349 | + |
| 350 | + class Meta: |
| 351 | + model = NestedRelatedSource |
| 352 | + fields = ("relation",) |
| 353 | + |
| 354 | + serializer = RelatedResourceTypeSerializer() |
| 355 | + field = serializer.fields["relation"] |
| 356 | + assert get_related_resource_type(field) == output |
| 357 | + |
| 358 | + |
316 | 359 | @pytest.mark.parametrize(
|
317 | 360 | "related_field_kwargs,output",
|
318 | 361 | [
|
|
0 commit comments